CHO MỘT SỐ NGUYÊN DƯƠNG N CÓ K CHU SO (0<K<20);
HÃY ĐẾM XEM SỐ N CÓ BAO NHIÊU CHỮ SỐ CHẴN BAO NHIÊU CHỮ SỐ LẺ
Câu 6. Tích chính phương – tichcp.* Cho trước số nguyên dương N (0< N≤ 1012). Yêu cầu: Tìm số nguyên dương K (K≥1) nhỏ nhất sao cho tích của K và N là một số chính phương. Dữ liệu vào: một số nguyên dương N. Dữ liệu ra: ghi số nguyên K tìm được. Ví dụ: input output 3 3 18 2 Ràng buộc
-Có 50% số test ứng với 𝑁 ≤ 10
-Có 50% số test ứng với 𝑁 ≤ 1012
#include <bits/stdc++.h>
using namespace std;
long long a[1000006];
long long n;
int main()
{
for(int i=1;i<=1000006;i++){
a[i]=i*i;
}
cin>>n;
for(int i=1;i<=n;i++){
if(a[i]%n==0){cout<<a[i]/n;break;}
}
return 0;
}
Cho số nguyên dương n và số nguyên dương k với 0 ≤ k ≤ n. Mệnh đề nào sau đây đúng?
A . C n k = C n n - k
B . C n k = C n - k n
C . C n k = C n k + 1
D . C n k = C n + 1 n - k
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;
}
BÀI 2. ĐỘ CAO CỦA DÃY SỐ DOCAO13.PAS
Ta gọi độ cao của một số nguyên dương K là tổng giá trị các chữ số của K.
Ví dụ: số 25362 có độ cao là 18. Cho dãy số nguyên dương A gồm N phần tử a 1 ,
a 2 , ..., a N .(1 ≤ N ≤ 1000, 1 ≤ i ≤ N, 0 < a i ≤ 2147483647)
Yêu cầu: Hãy tính độ cao của các phần tử trong dãy số A.
Dữ liệu vào: Ghi trong file văn bản DOCAO13.INP có cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương N, là số lượng phần tử của dãy số.
- Dòng 2: Ghi N số nguyên dương, số thứ i là giá trị của phần tử a i trong dãy số,
các số được ghi cách nhau ít nhất một dấu cách.
Dữ liệu ra: Ghi ra file văn bản DOCAO13.OUT theo cấu trúc như sau:
- Dòng 1: Ghi N số nguyên dương t 1 , t 2 , ..., t N, t i là độ cao của số của a i . Các số
được ghi cách nhau một dấu cách.
Ví dụ:
DOCAO13.INP DOCAO13.OUT
5 13 5 5 10 9
const fi='docao13.inp'
fo='docao13.out'
var f1,f2:text;
a:array[1..100]of integer;
i,n:integer;
//chuongtrinhcon
function kq(x:integer):integer;
var t,k:integer;
begin
t:=0;
while (x>0) do
begin
k:=x mod 10;
t:=t+k;
x:=x div 10;
end;
kq:=t;
end;
//chuongtrinhchinh
begin
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
readln(f1,n);
for i:=1 to n do
read(f1,a[i]);
for i:=1 to n do
write(f2,kq(a[i]):4);
close(f1);
close(f2);
end.
cho 3 số nguyên dương m,n,k. Kiểm tra xem có phải tích m*n*k là 1 số có nhiều hơn 2 chữ số có nghĩa và có chữ sô hàng đơn vị bằng 0 hay không
#include <bits/stdc++.h>
using namespace std;
long long m,n,k;
int main()
{
cin>>m>>n>>k;
if ((m*n*k>=10) and ((m*n*k)%10==0)) cout<<"Phai";
else cout<<"Khong phai";
return 0;
}
Với mỗi số nguyên dương n, kí hiệu Sn = 1!+2!+···+n!. Chứng minh rằng tồn tại số nguyên dương k sao cho Sk có ít nhất một ước nguyên tố lớn hơn 3^2019
Xét biểu thức lôgic:(n>0) and (n mod 2 = 0). Khẳng định nào sau đây là đúng?
A. Kiểm tra xem n có là số nguyên dương chẵn không
B. Kiểm tra xem n có là một số dương không
C. Kiểm tra n có chia hết cho 2 không
D. Kiểm tra n là một số nguyên chẵn không
Xét biểu thức lôgic:(n>0) and (n mod 2 = 0). Khẳng định nào sau đây là đúng?
A. Kiểm tra xem n có là số nguyên dương chẵn không
B. Kiểm tra xem n có là một số dương không
C. Kiểm tra n có chia hết cho 2 không
D. Kiểm tra n là một số nguyên chẵn không
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
intput:
5 24
3 2 4 2 8
output:
9
t ko bt lm, ms k10