Cho hai số nguyên dương N và K. Có bao nhiêu số nguyên dương không vượt quá N có tổng các chữ số chia hết cho K.
Ví dụ 1: N = 100; K = 3 thì kết quả là 33
Ví dụ 2: N = 22; K = 4 thì kết quả là 5.
số nguyên dương k được gọi là số may mắn nếu k chia hết cho tổng các chữ số của nó . Ví dụ 12 có tổng các chữ số là 3 và 12 chia hết cho 3 nên 12 là số may mắn.số 11 có tổng các chữ số là 2 và 11 không chia hết cho 2 nên 11 không phải là số may mắn.
Viết chương trình cho phép nhập số nguyên dương n từ bàn phím rồi thực hiện.
a/ cho biết có bao nhiêu số may mắn nhỏ hơn n
b/ in ra các số nhỏ nhất lớn hơn n và là số may mắn
(Mọi người làm bằng pascal giúp mình)
Tạo mảng A gồm n (n≤100) số nguyên, mỗi số có giá trị tuyệt đối không vượt quá 300.Viết chương trình C ++ tính tổng các phần tử của mảng là bội số của một số nguyên dương k cho trước.
#include <bits/stdc++.h>
using namespace std;
long long x,n,i,k,t;
int main()
{
cin>>n>>k;
t=0;
for (i=1; i<=n; i++)
{
cin>>x;
if (x%k==0) t+=x;
}
cout<<t;
return 0;
}
Một số được gọi là siêu nguyên tố nếu nó là số nguyên tố và có thể biểu diễn được thành tổng của hai số nguyên tố khác”.
Ví dụ: 5 là số siêu nguyên tố vì 5 = 2 + 3.
Cho số nguyên dương . Hỏi có bao nhiêu số siu nguyên tố không vượt quá ?
pascal
Cho tập số nguyên dương S={a1, a2, .., an} và một số nguyên K. Tìm một tập con Q có tổng nhỏ nhất sao cho tích các phần tử của Q chia hết cho K. Dữ liệu vào: + Dòng đầu tiên chứa hai số nguyên dương n, k (n < 105, k < 109) + Dòng thứ 2 chứa n số nguyên a1( d2,..., ữn(ữi 109) Dữ liệu ra: số nguyên dương X - tổng các số trong tập con cần tìm được
input:
5 24
3 2 4 2 8
output:
9
#include <iostream>
#include <vector>
using namespace std;
vector<int> primeFactors(int n) {
vector<int> factors;
for (int i = 2; i * i <= n; i++) {
while (n % i == 0) {
factors.push_back(i);
n /= i;
}
}
if (n > 1) factors.push_back(n);
return factors;
}
int main() {
int n, k;
cin >> n >> k;
vector<int> a(n);
for (int i = 0; i < n; ++i) {
cin >> a[i];
}
vector<int> factors = primeFactors(k);
int sum = accumulate(a.begin(), a.end(), 0);
vector<vector<bool>> dp(n+1, vector<bool>(sum+1, false));
dp[0][0] = true;
for (int i = 1; i <= n; ++i) {
for (int j = 0; j <= sum; ++j) {
dp[i][j] = dp[i-1][j];
if (j >= a[i-1]) {
for (int factor : factors) {
if (a[i-1] % factor == 0) {
dp[i][j] = dp[i][j] || dp[i-1][j-a[i-1]];
break;
}
}
}
}
}
for (int j = 0; j <= sum; ++j) {
if (dp[n][j]) {
cout << j << endl;
break;
}
}
return 0;
}
Tạo mảng A gồm n (\(n\le100\)) số nguyên, mỗi số có giá trị tuyệt đối không vượt quá 300.Viết chương trình tính tổng các phần tử của mảng là bội số của một số nguyên dương k cho trước.
uses crt;
var a:array[1..100]of integer;
i,n,t,k:integer;
begin
clrscr;
readln(n);
for i:=1 to n do readln(a[i]);
readln(k);
t:=0;
for i:=1 to n do
if a[i] mod k=0 then t:=t+a[i];
writeln(t);
readln;
end.
Uses crt;
Var A: array[1..100] of longint;
n,k,i,s: longint;
Begin
Clrscr;
Write(‘Nhap n,k: ‘); Readln(n,k);
s:=0;
For i:=1 to n do
Begin
Read(A[i]);
If A[i] mod k = 0 then s:=s+A[i];
End;
Write(s);
Readln
End.
Nhập vào từ bàn phím số nguyên dương N (1<N 10')
- Dòng 1: Tổng các chữ số của N.
- Dòng 2: Số lượng các số nguyên dương, không phải là số nguyên tố nhỏ hơn N
- Dòng 3: Ghi hai số 7 và K cách nhau 1 dấu cách : I10 cho tổng thu K số nguyên liên tiếp bắt đầu từ Z bằng N, trường hợp tồn tại nhiều giá trị Z, thì hiển thị màn hình kết quả có giá trị Z nhỏ nhất
- Dòng 4: Ghi số X là số lượng các chữ số cần dùng để chỉnh chốt quyển sách có N
Ví dụ :nhập vào 15
in ra d1:6
d2:8
d3:1 5
d4:21
#include <bits/stdc++.h>
using namespace std;
long long n,i,x,t,dem,j;
int main()
{
cin>>n;
x=n;
t=0;
while (n>0)
{
t=t+n%10;
n=n/10;
}
cout<<t;
dem=0;
for (i=2; i<=x; i++)
{
bool kt=true;
for (j=2; j*j<=i; j++)
if (i%j==0) kt=false;
if (kt==true) dem++;
}
cout<<dem;
return 0;
}
- Vì N là số tự nhiên có hai chữ số nên đặt \(N=\overline{ab}\) \(\left(0< a\le9;0\le b\le9;a,b\in N\right)\)
Ta có \(S\left(N\right)=S\left(\overline{ab}\right)=ab\) ; \(P\left(N\right)=P\left(\overline{ab}\right)=a+b\)
Vì \(N=S\left(N\right)+P\left(N\right)\) nên \(\overline{ab}=ab+a+b\)
\(\Rightarrow10a+b=ab+a+b\)
\(\Rightarrow9a=ab\Rightarrow b=9\) (vì a khác 0)
Vậy chữ số hàng đơn vị của N là 9 ---> chọn E
const fi='divk.inp'
fo='divk.out'
var f1,f2:text;
a:array[1..100]of integer;
i,n,k,dem,j,x,t:integer;
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
readln(f1,n,k);
for i:=1 to n do
read(f1,a[i]);
dem:=0;
for i:=1 to n do
for j:=1 to n do
begin
if i<j then
begin
t:=0;
for x:=i to j do
t:=t+a[x];
if t=k then inc(dem);
end;
for i:=1 to n do
if k=a[i] then inc(dem);
writeln(f2,dem);
close(f1);
close(f2);
end.
#include <bits/stdc++.h>
using namespace std;
#define nhungcute ios_base::sync_with_stdio; cin.tie(0); cout.tie(0);
const int N=1500;
long long n,k,a[N],i,j,c[N][101];
int main(){
nhungcute
cin>>n>>k;
for(i=1;i<=n;i++)
cin>>a[i];
for(i=1;i<=n;i++){
a[i]=a[i]%k;
}
for(i=1;i<k;i++)
c[1][i] =-1e9;
c[1][a[0]]=0;
c[1][a[1]]=1;
for(i=2;i<=n;i++){
for(j=0;j<k;j++){
c[i][j]=max(c[i-1][j],c[i-1][(j-a[i]+k)%k]+1);
}
}
cout<<c[n][0];
return 0;
}
Cho bảng gồm một dòng và n cột .
Yêu cầu: Đếm xem bảng có bao nhiêu hình chữ nhật thỏa mãn:
- Chiều rộng một ô;
- Chiều dài không quá k ô, với k cho trước.
Dữ liệu nhập từ bàn phím gồm hai số nguyên dương n và k (1 ≤ k, n ≤ 105).
Kết quả ghi ra màn hình số hình chữ nhật của bảng có chiều rộng một ô, chiều dài không quá k ô.
ta có n - k + 1 ô full k ô, k - 1 ô còn lại thì lần lượt là tổng từ 1->k - 1
Đây là đáp án đúng;
\(\left(k\times n\right)-\dfrac{\left(k-1\right)\times k}{2}\)