Professional Documents
Culture Documents
Hãy đếm xem N có bao nhiêu chữ số lẻ và bao nhiêu chữ số chẵn. Nếu không tồn tại số lẻ
hoặc số chẵn thì in ra kết quả là 0 cho loại số tương ứng
Input
Output
Ví dụ
Input Output
12345678 44
#include<stdio.h>
int main(){
int n,d=0,e=0,k;
scanf("%d",&n);
while(n>0){
k=n%10;
if(k%2==0){
d++;
}
else e++;
n=n/10;
}
printf("%d %d",e,d);
}
LIỆT KÊ SỐ NGUYÊN TỐ TRONG DÃY
Đếm các phần tử là số nguyên tố trong mảng và in ra lần lượt theo thứ tự xuất hiện.
Input
Output
Ghi số lượng các số nguyên tố, sau đó lần lượt là các số nguyên tố theo thứ tự xuất hiện.
Ví dụ:
Input Output
6 3 5 3 19
1 5 3 19 18 25
#include<stdio.h>
#include<math.h>
int nt(int a){
int i,kt=0;
if(a<=1) return 0;
for(i=2;i<=sqrt(a);i++){
if(a%i==0){
kt=1;
break;
}
}
if(kt==1) return 0;
else return 1;
}
int main(){
int n,j,d=0;
scanf("%d",&n);
int a[n];
for(j=0;j<n;j++){
scanf("%d",&a[j]);
}
for(j=0;j<n;j++){
if(nt(a[j])==1){
d++;
}
}
printf("%d ",d);
for(j=0;j<n;j++){
if(nt(a[j])==1){
printf("%d ",a[j]);
}
}
}
SỐ ĐẸP 1
Input
Chỉ có một dòng ghi hai số nguyên dương a,b (a có thể lớn hơn b) không quá 1000.
Output
Ghi ra các số thỏa mãn trên một dòng, cách nhau một khoảng trống.
Ví dụ
Input Output
2 50 2 3 5 11 17 23 41
#include<stdio.h>
#include<math.h>
int nt(int a){
int i,kt=0;
if(a<=1) return 0;
for(i=2;i<=sqrt(a);i++){
if(a%i==0){
kt=1;
break;
}
}
if(kt==1) return 0;
else return 1;
}
int fb(int n)
{
int s=0;
while(n>0){
s=s+n%10;
n/=10;
}
if(s==1||s==0||s==2||s==3 || s==5 || s==8 || s==13 || s==21|| s==34) return 1;
else return 0;
}
int main(){
int a,b,i;
scanf("%d %d",&a,&b);
if(a>b){
int d=a;
a=b;
b=d;
}
for(i=a;i<=b;i++){
TÍNH TỔNG
Input
Có duy nhất một dòng ghi hai số nguyên, cách nhau một khoảng trống.
Output
Ví dụ
Input Output
10 2 12
#include<stdio.h>
int main(){
int a,b;
scanf("%d %d",&a,&b);
printf("%d",a+b);
}
Kết quả tính toán ghi trên một dòng. Nếu b = 0 thì không thực hiện phép toán nào mà chỉ
in ra số 0.
Input
Output
Ghi ra lần lượt kết quả các phép toán trên một dòng.
Ví dụ
Input Output
10 5 15 5 50 2.00 0
#include<stdio.h>
int main(){
int a,b;
scanf("%d %d",&a,&b);
if(b==0) printf("0");
else{
int tong,hieu,tich,cd;
float chia;
tong=a+b;
hieu=a-b;
tich=a*b;
cd=a%b;
chia=(float)a/b;
Viết chương trình tính chu vi và diện tích của hình chữ nhật đó. Nếu dữ liệu không hợp lệ
(chiều dài hoặc chiều rộng ≤ 0 thì in ra số 0)
Input
Có duy nhất một dòng ghi hai số nguyên, cách nhau một khoảng trống.
Output
In kết quả trên một dòng, chu vi rồi đến diện tích, cách nhau một khoảng trống.
Ví dụ
Input Output
10 2 24 20
#include<stdio.h>
int main(){
int a,b;
scanf("%d %d",&a,&b);
long c,s;
c=(a+b)*2;
s=a*b;
printf("%ld %ld",c,s);
F = (C * 9 / 5) + 32
Viết chương trình nhập vào nhiệt độ đo theo độ C, thực hiện chuyển sang đơn vị đo độ F
và in ra màn hình. (Lưu ý luôn lấy 2 chữ số thập phân).
Input
Có duy nhất một dòng ghi nhiệt độ đo theo độ C (không quá 100).
Output
Ví dụ
Input Output
24 75.20
#include<stdio.h>
int main(){
float k,c;
scanf("%f",&c);
k=(c * 9 / 5) + 32;
printf("%.2f",k);
Input
Output
In kết quả trên một dòng theo thứ tự: năm – tuần – ngày, mỗi số cách nhau một khoảng
trống.
Ví dụ
Input Output
350 0 50 0
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int nam,t,ngay;
nam=n/365;
t=(n-365*nam)/7;
ngay=n-365*nam-t*7;
printf("%d %d %d",nam,t,ngay);
Input
Chỉ có một dòng ghi ba số a,b,c, giá trị tuyệt đối không quá 1000. Không có trường hợp a
= b = c = 0.
Output
Kết quả ghi ra trên một dòng, nếu không có nghiệm in ra NO.
Ví dụ
Input Output
1 2 1 -1.00
#include<stdio.h>
#include<math.h>
int main(){
float a,b,c;
scanf("%f %f %f",&a,&b,&c);
float d,m,n,e;
d=(b*b)-(4*a*c);
if(d<0) printf("NO");
else if(d==0) {
e=(-b/(2*a));
printf("%.2f",e);
else {
m=(-b+sqrt(d))/(2*a);
n=(-b-sqrt(d))/(2*a);
printf("%.2f %.2f",m,n);
Thực hiện tính tổng các số tự nhiên nằm trong đoạn [a, b] và in ra màn hình.
Output
Ví dụ
Input Output
1 10 55
#include<stdio.h>
int main(){
int a,b;
long s=0;
scanf("%d %d",&a,&b);
if(a>b){
int d=a;
a=b;
b=d;
for(int i=a;i<=b;i++){
s+=i;
printf("%ld",s);
}
BẢNG CỬU CHƯƠNG
Input
Output
Ví dụ
Input Output
5 5 10 15 20 25 30 35 40 45 50
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int a[100];
for(int i=1;i<11;i++){
a[i]=n*i;
printf("%d ",a[i]);
}
ĐẾM SỐ CHỮ SỐ
Input
Output
Ví dụ
Input Output
1234 4
#include<stdio.h>
int main(){
long n;
scanf("%ld",&n);
int d=0;
while(n>0){
d++;
n=n/10;
printf("%d",d);
}
CHỮ SỐ ĐẦU CUỐI
Input
Output
Ví dụ
Input Output
1234 14
#include<stdio.h>
int main(){
long n;
scanf("%ld",&n);
int d=n%10;
int e;
while(n>0){
e=n%10;
n=n/10;
}
printf("%d %d",e,d);
Hãy thực hiện đổi vị trí của chữ số đầu tiên và chữ số cuối cùng.
Lưu ý trong trường hợp chữ số cuối cùng là 0 thì khi đổi chỗ sẽ được loại bỏ (ví dụ 9800
-> 809)
Input
Output
Ví dụ
Input Output
1234 4231
#include<stdio.h>
int main(){
long n;
scanf("%ld",&n);
long a=n,m=1,i;
int d=n%10;
int e,dem=0;
while(n>0){
dem++;
e=n%10;
n=n/10;
for(i=1;i<dem;i++){
m=m*10;
long k=(a-e*m)/10;
if(d==0) printf("%d%d",k,e);
else printf("%d%d%d",d,k,e);
TỔNG CHỮ SỐ 1
Input:
Output:
Input Output
1234 10
#include<stdio.h>
int main(){
long n,s=0;
scanf("%ld",&n);
while(n>0){
s=s+n%10;
n=n/10;
printf("%ld",s);
TÍCH CHỮ SỐ
Input
Output
Input Output
1234 24
#include<stdio.h>
int main(){
long n,s=1;
scanf("%ld",&n);
while(n>0){
s=s*(n%10);
n=n/10;
printf("%ld",s);
SỐ HOÀN HẢO
Nhập vào số N và kiểm tra xem n có phải là số hoàn hảo hay không. Nếu đúng in ra 1, sai
in ra 0.
Input
Output
Ghi ra 1 hoặc 0
Ví dụ
Input Output
6 1
#include<stdio.h>
int main(){
int n,s=0;
scanf("%d",&n);
int a=n;
for(int i=1;i<n;i++){
if(n%i==0){
s=s+i;
if(a==s) printf("1");
else printf("0");
Viết chương trình cho phép nhập vào số n (không quá 6 chữ số) và liệt kê các số hoàn
hảo nhỏ hơn n.
Input:
Ví dụ:
Input Output
1000 6 28 496
#include<stdio.h>
#include<math.h>
int s=0,a=n;
for(int i=1;i<=sqrt(n);i++){
if(n%i==0){
if(i==1 || i*i==n){
s=s+i;
else s=s+i+(n/i);
if(a==s) return 1;
else return 0;
int main(){
int n;
scanf("%d",&n);
int a=n;
for(int i=2;i<n;i++){
Input:
Output:
Ví dụ:
Input Output
1 1000 6 28 496
#include<stdio.h>
#include<math.h>
int s=0,a=n;
if(n==1) return 0;
for(int i=1;i<=sqrt(n);i++){
if(n%i==0){
if(i==1 || i*i==n){
s=s+i;
else s=s+i+(n/i);
if(a==s) return 1;
else return 0;
int main(){
int a,b;
scanf("%d %d",&a,&b);
if(a>b){
int d=a;
a=b;
b=d;
for(int i=a;i<=b;i++){
SỐ STRONG
Viết chương trình nhập vào số n không quá 6 chữ số và kiểm tra xem n có phải số Strong
hay không. Nếu đúng in ra 1 sai in ra 0.
Input
Output
Ghi ra 1 hoặc 0
Ví dụ
Input Output
145 1
#include<stdio.h>
long s=1;
for(int i=1;i<=a;i++){
s=s*i;
return s;
int d,s=0;
while(n>0){
d=n%10;
n/=10;
s=s+gt(d);
return s;
int main(){
int n;
scanf("%d",&n);
if(n==sst(n)) printf("1");
else printf("0");
}
Viết chương trình nhập vào số n không quá 9 chữ số và liệt kê các số Strong nhỏ hơn n
(Các kết quả thỏa mãn được liệt kê trên một dòng cách nhau một khoảng trống)
Input:
Output:
Ví dụ:
Input Output
1000 1 2 145
#include<stdio.h>
long s=1;
for(int i=1;i<=a;i++){
s=s*i;
return s;
}
int sst(int n){
int d,s=0;
int a=n;
while(n>0){
d=n%10;
n/=10;
s=s+gt(d);
if(a==s) return 1;
else return 0;
int main(){
int n,i;
scanf("%d",&n);
for(i=1;i<n;i++){
Các kết quả thỏa mãn liệt kê cách nhau một khoảng trống.
Input:
Output:
Ví dụ:
Input Output
1 1000 1 2 145
#include<stdio.h>
long s=1;
for(int i=1;i<=a;i++){
s=s*i;
return s;
int d,s=0;
int a=n;
while(n>0){
d=n%10;
n/=10;
s=s+gt(d);
if(a==s) return 1;
else return 0;
int main(){
int a,b,i;
scanf("%d %d",&a,&b);
if(a>b){
int d=a;
a=b;
b=d;
for(i=a;i<=b;i++){
Input:
Output:
Ví dụ:
Input Output
8 1
#include<stdio.h>
int main(){
long n;
scanf("%ld",&n);
long a[n],i,kt=0;
a[0]=0;
a[1]=1;
else{
for(i=2;i<=n+1;i++){
a[i]=a[i-1]+a[i-2];
if(a[i]==n){
kt=1;
break;
}
}
if(kt==1) printf("1");
else printf("0");
Input:
Output:
Ví dụ:
Input Output
8 0 1 1 2 3 5 8 13
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int a[50];
printf("0 1 ");
a[0]=0;
a[1]=1;
for(int i=2;i<n;i++){
a[i]=a[i-1]+a[i-2];
printf("%d ",a[i]);
Input
Output
Ví dụ
Input Output
4 ****
****
****
****
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
printf("*");
printf("\n");
Input
Chỉ có một số nguyên dương N không quá 100.
Output
Ví dụ
Input Output
4 ****
*..*
*..*
****
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
else {
else printf(".");
printf("\n");
}
}
Input
Output
Ví dụ
Input Output
5 ~~~~*****
~~~*****
~~*****
~*****
*****
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
for(int j=n-i;j>0;j--){
printf("~");
for(int j=1;j<=n;j++){
printf("*");
printf("\n");
Input
Ví dụ
Input Output
5 ~~~~*****
~~~*...*
~~*...*
~*...*
*****
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
for(int j=n-i;j>0;j--){
printf("~");
for(int j=1;j<=n;j++){
else{
else printf(".");
}
}
printf("\n");
Input
Chỉ có một số dòng ghi hai số a,b là số hàng và số cột (không quá 100).
Output
Ví dụ
Input Output
35 *****
~*****
~~*****
#include<stdio.h>
int main(){
int n,m;
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++){
for(int j=1;j<i;j++){
printf("~");
for(int j=1;j<=m;j++){
printf("*");
printf("\n");
Input
Chỉ có một số dòng ghi hai số a,b là số hàng và số cột (không quá 100).
Output
Ví dụ
Input Output
34 ****
~*..*
~~****
#include<stdio.h>
int main(){
int n,m;
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++){
for(int j=1;j<i;j++){
printf("~");
for(int j=1;j<=m;j++){
else{
else printf(".");
printf("\n");
}
TAM GIÁC VUÔNG TRÁI
Input
Output
Ví dụ
Input Output
5 *
**
***
****
*****
#include<stdio.h>
int main(){
int n,i;
scanf("%d",&n);
for(i=1;i<=n;i++){
for(int j=1;j<=i;j++){
printf("*");
}
printf("\n");
}
}
Input
Output
Ví dụ
Input Output
5 *
**
*.*
*..*
*****
#include<stdio.h>
int main(){
int n,i;
scanf("%d",&n);
for(i=1;i<=n;i++){
for(int j=1;j<=i;j++){
if(i==1 || i==n) printf("*");
else{
if(j==1 || j==i) printf("*");
else printf(".");
}
}
printf("\n");
}
}
Input
Output
Ví dụ
Input Output
5 ~~~~*
~~~**
~~***
~****
*****
#include<stdio.h>
int main(){
int n,i;
scanf("%d",&n);
for(i=1;i<=n;i++){
for(int j=1;j<=n-i;j++){
printf("~");
}
for(int k=n-i+1;k<=n;k++){
printf("*");
}
printf("\n");
}
}
Input
Chỉ có một số dòng ghi số hàng và số cột của hình chữ nhật (không quá 9).
Output
Ví dụ
Input Output
44 1234
2341
3421
4321
35 12345
23451
34521
64 1234
2341
3421
4321
5321
6321
#include<stdio.h>
int main(){
int n,m,i,j;
scanf("%d %d",&n,&m);
int c=0;
if(n<=m){
for(i=0;i<n;i++){
int e=c+1;
int d=c;
for(j=0;j<m-c;j++){
d++;
printf("%d",d);
}
for(j=m-c;j<m;j++){
e--;
printf("%d",e);
}
printf("\n");
c++;
}
}
else {
for(i=0;i<m;i++){
int e=c+1;
int d=c;
for(j=0;j<m-c;j++){
d++;
printf("%d",d);
}
for(j=m-c;j<m;j++){
e--;
printf("%d",e);
}
printf("\n");
c++;
}
for(i=m;i<n;i++){
int y=m;
for(j=0;j<m;j++){
if(j==0){
printf("%d",i+1);
}
else {
y--;
printf("%d",y);
}
}
printf("\n");
}
}
}
HÌNH CHỮ NHẬT - 2
Input
Chỉ có một số dòng ghi số hàng và số cột của hình chữ nhật (không quá 9).
Output
Ví dụ
Input Output
44 1234
2343
3432
4321
35 12345
23454
34543
53 123
232
321
432
543
#include<stdio.h>
int main(){
int n,m,i,j;
scanf("%d %d",&n,&m);
if(n>m){
for(i=1;i<m;i++){
int d=i-1;
for(j=1;j<=m-i+1;j++){
d++;
printf("%d",d);
}
for(j=m-i+2;j<=m;j++){
d--;
printf("%d",d);
}
printf("\n");
}
for(i=m;i<=n;i++){
int e=i;
for(j=1;j<=m;j++){
printf("%d",e);
e--;
}
printf("\n");
}
}
else{
for(i=1;i<=n;i++){
int d=i-1;
for(j=1;j<=m-i+1;j++){
d++;
printf("%d",d);
}
for(j=m-i+2;j<=m;j++){
d--;
printf("%d",d);
}
printf("\n");
}
}
}
Input
Chỉ có một số dòng ghi số hàng và số cột của hình chữ nhật (không quá 9).
Output
Ghi ra kết quả theo mẫu.
Ví dụ
Input Output
44 1234
2123
3212
4321
46 123456
212345
321234
432123
64 1234
2123
3212
4321
5432
6543
#include<stdio.h>
int main(){
int n,m,i,j,d;
scanf("%d %d",&n,&m);
if(n<=m){
for(i=1;i<=n;i++){
d=i;
for(j=1;j<i;j++){
printf("%d",d);
d--;
}
for(j=i;j<=m;j++){
printf("%d",d);
d++;
}
printf("\n");
}
}
else{
for(i=1;i<=m;i++){
d=i;
for(j=1;j<i;j++){
printf("%d",d);
d--;
}
for(j=i;j<=m;j++){
printf("%d",d);
d++;
}
printf("\n");
}
for(i=m+1;i<=n;i++){
d=i;
for(j=1;j<=m;j++){
printf("%d",d);
d--;
}
printf("\n");
}
}
}
Input
Chỉ có một số dòng ghi số hàng và số cột của hình chữ nhật (không quá 9).
Output
Ví dụ
Input Output
44 4321
3212
2123
1234
46 654321
543212
432123
321234
64 6543
5432
4321
3212
2123
1234
#include<stdio.h>
int main(){
int n,m,i,j,d;
scanf("%d %d",&n,&m);
if(n<=m){
for(i=1;i<=n;i++){
d=m+1-i;
for(j=1;j<m+1-i;j++){
printf("%d",d);
d--;
}
for(j=m+1-i;j<=m;j++){
printf("%d",d);
d++;
}
printf("\n");
}
}
else{
for(i=1;i<n-m;i++){
d=n+1-i;
for(j=1;j<=m;j++){
printf("%d",d);
d--;
}
printf("\n");
}
for(i=n-m;i<=n;i++){
d=n-i+1;
for(j=1;j<n-i+1;j++){
printf("%d",d);
d--;
}
for(j=n-i+1;j<=m;j++){
printf("%d",d);
d++;
}
printf("\n");
}
}
}
Ví dụ
Input Output
99 1111 1111 99
#include<stdio.h>
int tcn(int a){
int s=0;
while(a>0){
s=s+a%10;
a=a/10;
}
return s;
}
int main(){
int n,m,i,j,d;
scanf("%d %d",&n,&m);
if(tcn(m)<tcn(n)) printf("%d %d",m,n);
else printf("%d %d",n,m);
}
Input
Output
Ví dụ:
Input Output
7 23
2332195
#include<stdio.h>
int b[10001];
int main(){
int n,i,d=0,j;
scanf("%d\n",&n);
int a[n];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
b[a[i]]++;
}
for(i=0;i<n;i++){
int kt=0;
if(b[a[i]]>1) {
d++;
for(j=0;j<i;j++){
if(a[j]==a[i]){
kt=1;
break;
}
}
}
if(kt==0 && b[a[i]]>1) printf("%d ",a[i]);
if(d==0) printf("0");
}
Input
Dòng 1 ghi số n. Dòng 2 ghi n số của mảng.
Output
Ghi ra kết quả kết quả gồm các số khác nhau và số lần xuất hiện. Mỗi số trên một dòng.
Ví dụ:
Input Output
7 22
2332195 32
11
91
51
#include<stdio.h>
int b[10001];
int main(){
int n,i,d=0,j;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
b[a[i]]++;
}
for(i=0;i<n;i++){
int kt=0;
for(j=0;j<i;j++){
if(a[j]==a[i]){
kt=1;
break;
}
}
if(kt==0) printf("%d %d\n",a[i],b[a[i]]);
}
}
CHÈN MẢNG 1
Input
Các phần tử không vượt quá 1000. Vị trí cần chèn đảm bảo nằm trong mảng A.
Output
Ví dụ:
Input Output
53 12367845
12345
678
3
#include <stdio.h>
int main(){
int m,n,i,j;
scanf("%d %d\n",&m,&n);
int a[m],b[n];
for(i=0;i<m;i++){
scanf("%d\n",&a[i]);
}
for(i=0;i<n;i++){
scanf("%d\n",&b[i]);
}
int k;
scanf("%d\n",&k);
for(i=0;i<k;i++){
printf("%d ",a[i]);
}
for(i=k;i<k+n;i++){
printf("%d ",b[i-k]);
}
for(i=k+n;i<m+n;i++){
printf("%d ",a[i-n]);
}
}
Input
Output
Ví dụ:
Input Output
5 54321
12345
#include <stdio.h>
int main(){
int m,n,i,j;
scanf("%d\n",&n);
int a[n];
for(i=0;i<n;i++){
scanf("%d\n",&a[i]);
}
for(i=n-1;i>=0;i--){
printf("%d ",a[i]);
}
}
TÁCH CHẴN LẺ
Input
Output
Ví dụ:
Input Output
5 24
12345 135
#include <stdio.h>
int main(){
int m,n,i,j;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n;i++){
if(a[i]%2==0)
printf("%d ",a[i]);
}
printf("\n");
for(i=0;i<n;i++){
if(a[i]%2==1)
printf("%d ",a[i]);
}
}
Input
Ví dụ:
Input Output
8 12356789
13829765
#include <stdio.h>
int main(){
int m,n,i,j;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(a[i]>a[j]){
int d=a[j];
a[j]=a[i];
a[i]=d;
}
}
}
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
}
Input
Output
Ví dụ:
Input Output
8 98765321
13829765
#include <stdio.h>
int main(){
int m,n,i,j;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(a[i]<a[j]){
int d=a[j];
a[j]=a[i];
a[i]=d;
}
}
}
for(i=0;i<n;i++){
printf("%d ",a[i]);
}
DỊCH TRÁI
Input
Dòng thứ nhất là số phần tử của mảng A.
Output
Ví dụ:
Input Output
10 4 5 6 7 8 9 10 1 2 3
1 2 3 4 5 6 7 8 9 10
3
#include <stdio.h>
int main(){
int m,n,i,j;
scanf("%d\n",&n);
int a[n];
for(i=0;i<n;i++){
scanf("%d\n",&a[i]);
}
int k;
scanf("%d\n",&k);
for(i=0;i<n-k;i++){
printf("%d ",a[i+k]);
}
for(i=n-k;i<n;i++){
printf("%d ",a[i-n+k]);
}
DỊCH PHẢI
Input
Output
Ví dụ:
Input Output
10 8 9 10 1 2 3 4 5 6 7
1 2 3 4 5 6 7 8 9 10
3
#include <stdio.h>
int main(){
int m,n,i,j;
scanf("%d\n",&n);
int a[n];
for(i=0;i<n;i++){
scanf("%d\n",&a[i]);
}
int k;
scanf("%d\n",&k);
for(i=0;i<k;i++){
printf("%d ",a[n+i-k]);
}
for(i=k;i<n;i++){
printf("%d ",a[i-k]);
}
Dữ liệu vào đảm bảo dãy có ít nhất 2 số khác nhau.
Input
Output
Ví dụ:
Input Output
6 80 79
80 23 79 58 11 10
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int a[n],i,kt=0,s;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++){
for(int j=i+1;j<n;j++){
if(a[i]<a[j]){
int d=a[j];
a[j]=a[i];
a[i]=d;
}
}
}
for(i=0;i<n;i++){
s=a[i];
if(s!=a[0]) {
kt=1;
break;
}}
if(kt==1){
printf("%d %d",a[0],s);
}
Input
Output
Ví dụ:
Input Output
7 3
1 5 10 10 5 2 3 123
#include<stdio.h>
int b[10001];
int main(){
int n,d=0;
scanf("%d",&n);
int a[n],i,kt=0,s;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
b[a[i]]++;
}
for(i=0;i<n;i++){
if(b[a[i]]==1){
d++;
}
}
printf("%d\n",d);
for(i=0;i<n;i++){
if(b[a[i]]==1){
printf("%d ",a[i]);
}
}
}
Input
Output
Ví dụ:
Input Output
6 10 11
80 23 79 58 11 10
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int a[n],i,kt=0,s;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n-1;i++){
for(int j=i+1;j<n;j++){
if(a[i]>a[j]){
int d=a[j];
a[j]=a[i];
a[i]=d;
}
}
}
for(i=0;i<n;i++){
s=a[i];
if(s!=a[0]) {
kt=1;
break;
}}
if(kt==1){
printf("%d %d",a[0],s);
}
}
LIỆT KÊ PHẦN TỬ XUẤT HIỆN NHIỀU HƠN 1 LẦN
Viết chương trình nhập vào mảng A gồm n phần tử số nguyên (2 < n < 100). Đếm các
phần tử xuất hiện nhiều hơn một lần và liệt kê các số đó.
Input
Output
Ví dụ:
Input Output
7 2
1 5 10 10 5 2 3 5 10
#include<stdio.h>
int b[10001];
int main(){
int n,i,d=0,j;
scanf("%d\n",&n);
int a[n];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
b[a[i]]++;
}
for(i=0;i<n;i++){
int kt=0;
if(b[a[i]]>1) {
for(j=0;j<i;j++){
if(a[j]==a[i]){
kt=1;
break;
}
}
}
if(kt==0 && b[a[i]]>1) d++;
}
printf("%d\n",d);
for(i=0;i<n;i++){
int kt=0;
if(b[a[i]]>1) {
for(j=0;j<i;j++){
if(a[j]==a[i]){
kt=1;
break;
}
}
}
if(kt==0 && b[a[i]]>1) printf("%d ",a[i]);
Viết chương trình nhập vào một xâu ký tự S có độ dài không quá 100 và chuyển xâu đã
nhập thành chữ in hoa.
Input:
Output:
Ghi ra kết quả trên một dòng.
Ví dụ:
Input Output
mon thcs 2 MON THCS 2
#include <stdio.h>
#include <string.h>
int main(){
char a[101];
gets(a);
for(int i;i<=strlen(a);i++){
if(a[i]>='a' && a[i]<='z'){
a[i]=a[i]-32;
}
}
printf("%s",a);
}
ĐẾM KÝ TỰ
Viết chương trình nhập vào một xâu ký tự S, thực hiện phân tích xâu đã nhập chứa bao
nhiêu chữ cái, chữ số và các ký tự khác.
Input:
Output:
Ghi ra kết quả theo mẫu trong ví dụ: số chữ cái, số chữ số, số các ký tự khác.
Ví dụ:
Input Output
mon thcs mon THCS 2 ... 14 1 8
#include<stdio.h>
#include<string.h>
int main(){
char a[1000001];
gets(a);
long long i,x=0,y=0,z=0;
for(i=0;i<strlen(a);i++){
if((a[i]>='a' && a[i]<='z') || (a[i]<='Z' && a[i]>='A')) {
x++;
}
else if(a[i]>=48 && a[i]<=57){
y++;
}
else {
z++;
}
}
printf("%lld %lld %lld",x,y,z);
}
Viết chương trình nhập vào mảng A gồm n phần tử số nguyên (2 < n < 100). Thực hiện
loại bỏ các phần tử đã xuất hiện và In ra mảng kết quả.
Input
Output
Ví dụ:
Input Output
7 1 5 10 2 3
1 5 10 10 5 2 3
#include<stdio.h>
int main(){
int n,i,d=0,j;
scanf("%d\n",&n);
int a[n];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n;i++){
int kt=0;
for(j=0;j<i;j++){
if(a[j]==a[i]){
kt=1;
break;
}
}
if(kt==0 ) printf("%d ",a[i]);
Input
Chỉ có một số dòng ghi số hàng và số cột của hình chữ nhật (không quá 20).
Output
Ví dụ
Input Output
55 eeeee
edddd
edccc
edcbb
edcba
46 ffffff
feeeee
fedddd
fedccc
64 ffff
feee
fedd
fedc
fedc
fedc
#include<stdio.h>
#include<string.h>
int main(){
int m,n;
scanf("%d %d",&m,&n);
int d=n;
int i,j;
if(m>=n){
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if(i>=j) printf("%c",m-j+96);
else printf("%c",m-i+96);
}
printf("\n");
}
}
else {
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if(i>=j) printf("%c",n-j+96);
else printf("%c",n-i+96);
}
printf("\n");
}
}
}
Nhập vào số hàng và số cột của hình chữ nhật (không quá 20). Vẽ hình chữ nhật ký tự
theo nguyên tắc tương ứng theo mẫu trong các ví dụ dưới đây.
Input
Chỉ có một số dòng ghi số hàng và số cột của hình chữ nhật (không quá 20).
Output
Ví dụ
Input Output
44 ABCD
BCDA
CDBA
DCBA
35 ABCDE
BCDEA
CDEBA
53 ABC
BCA
CBA
CBA
CBA
#include<stdio.h>
int main(){
int m,n;
scanf("%d %d",&m,&n);
int i,j;
if(m<=n){
for(i=1;i<=m;i++){
for(j=i;j<=n;j++){
printf("%c",j+64);
}
for(j=n+1;j<n+i;j++){
printf("%c",n+i-j+64);
}
printf("\n");
}
}
else {
for(i=1;i<=n;i++){
for(j=i;j<=n;j++){
printf("%c",j+64);
}
for(j=n+1;j<n+i;j++){
printf("%c",n+i-j+64);
}
printf("\n");
}
for(i=n+1;i<=m;i++){
for(j=n;j>0;j--){
printf("%c",j+64);
}
printf("\n");
}
}
}
TAM GIÁC KÝ TỰ - 2
Vẽ hình tam giác ký tự theo nguyên tắc tương ứng theo mẫu trong ví dụ dưới đây.
Input
Output
Ví dụ
Input Output
4 ACEG
CEG
EG
G
#include<stdio.h>
#include<string.h>
int main(){
int m;
scanf("%d",&m);
int i,j;
for(i=0;i<m;i++){
for(j=i;j<m;j++){
printf("%c",j+65+j);
}
printf("\n");
}
}
TAM GIÁC KÝ TỰ - 5
Vẽ hình tam giác ký tự theo nguyên tắc tương ứng theo mẫu trong ví dụ dưới đây.
Input
Output
Ghi ra kết quả theo mẫu.
Ví dụ
Input Output
5 DEFGH
CDEF
BCD
AB
#include<stdio.h>
#include<string.h>
int main(){
int m;
scanf("%d",&m);
int i,j;
for(i=m;i>0;i--){
for(j=i;j<=2*i-1;j++){
printf("%c",j+63);
}
printf("\n");
}
}
Nhập vào số hàng và số cột của hình chữ nhật (không quá 20). Vẽ hình chữ nhật ký tự
theo nguyên tắc tương ứng theo mẫu trong các ví dụ dưới đây.
Input
Chỉ có một số dòng ghi số hàng và số cột của hình chữ nhật (không quá 20).
Output
Ví dụ
Input Output
44 @ABC
ABCC
BCCC
CCCC
35 @ABCD
ABCDD
BCDDD
53 @AB
ABB
BBB
BBB
BBB
#include<stdio.h>
int main(){
int m,n;
scanf("%d %d",&m,&n);
int i,j;
if(m<=n){
for(i=1;i<=m;i++){
for(j=i;j<=n;j++){
printf("%c",j+63);
}
for(j=1;j<i;j++){
printf("%c",n+63);
}
printf("\n");
}
}
else {
for(i=1;i<=n;i++){
for(j=i;j<=n;j++){
printf("%c",j+63);
}
for(j=1;j<i;j++){
printf("%c",n+63);
}
printf("\n");
}
for(i=n+1;i<=m;i++){
for(j=1;j<=n;j++){
printf("%c",n+63);
}
printf("\n");
}
}
Nhập vào số hàng và số cột của hình chữ nhật (không quá 20). Vẽ hình chữ nhật ký tự
theo nguyên tắc tương ứng theo mẫu trong các ví dụ dưới đây.
Input
Chỉ có một số dòng ghi số hàng và số cột của hình chữ nhật (không quá 20).
Output
Ví dụ
Input Output
44 DDDD
CDDD
BCDD
ABCD
35 CDEEE
BCDEE
ABCDE
53 CCC
CCC
CCC
BCC
ABC
#include<stdio.h>
int main(){
int m,n;
scanf("%d %d",&m,&n);
int i,j;
if(m<=n){
for(i=m;i>0;i--){
for(j=i;j<=n;j++){
printf("%c",j+64);
}
for(j=1;j<i;j++){
printf("%c",n+64);
}
printf("\n");
}
}
else {
for(i=m;i>=n+1;i--){
for(j=1;j<=n;j++){
printf("%c",n+64);
}
printf("\n");
}
for(i=n;i>0;i--){
for(j=i;j<=n;j++){
printf("%c",j+64);
}
for(j=1;j<i;j++){
printf("%c",n+64);
}
printf("\n");
}
Cho xâu ký tự S1 và một từ S2. Viết chương trình loại bỏ tất cả các từ S2 xuất hiện trong
S1
Input:
Output:
Ví dụ:
Input Output
mon thcs2 la mon 2tc thcs2 la 2tc
mon
#include<stdio.h>
#include<string.h>
int main(){
char a[1000],b[1000];
gets(a);
scanf("\n");
gets(b);
int m=strlen(a), n=strlen(b),i,j;
for(i=0;i<m;i++){
int k=1;
while(k!=0){
if(a[i+k-1]!=b[k-1]) break;
else k++;
if(k==n+1){
for(j=i;j<k+i;j++){
a[j]='\0';
}
k=0;
}
}
}
for(i=0;i<m;i++){
if(a[i]!='\0') printf("%c",a[i]);
}
}
Cho xâu ký tự S có độ dài không quá 100. Hãy loại bỏ các từ trùng nhau trong xâu.
Input:
Output:
Ghi ra kết quả sau khi loại các từ trùng nhau.
Ví dụ:
Input Output
mon thcs2 hoc la mon 2tc hoc mon thcs2 hoc la 2tc
#include<stdio.h>
#include<string.h>
int bn(char a[],char b[]){
int n=strlen(a);
int l=strlen(b);
if(n!=l) return 0;
else {
for(int i=0;i<n;i++){
if(a[i]!=b[i]) return 0;
}
return 1;
}
}
int main(){
char a[1001];
char s[1001][1001];
gets(a);
int i,j,n=strlen(a);
int l=0,x=0;
for(i=0;i<n;i++){
if(a[i]!=' '){
s[l][x++]=a[i];
}
if(a[i]==' '){
l++;
x=0;
}
}
for(i=0;i<=l;i++){
int d=0;
for(j=0;j<i;j++){
if(bn(s[i],s[j])==1){
d++;
break;
}
}
if(d==0) printf("%s ",s[i]);
}
}GIÁ TRỊ NHỎ NHẤT TRONG BA SỐ
Input
Chỉ có một dòng ghi ba số a,b,c cách nhau một khoảng trống. Cả ba số không quá 6 chữ
số.
Output
Ví dụ
Input Output
10 20 30 10
#include<stdio.h>
int main(){
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
int min=a;
if(b<min) min=b;
if (c<min) min=c;
printf("%d",min);
}
GẤP ĐÔI 1
Cho số tự nhiên N không quá 7 chữ số. Hãy in ra giá trị gấp đôi của N.
Input
Output
Ví dụ
Input Output
23 46
#include<stdio.h>
int main(){
int a;
scanf("%d",&a);
printf("%d",a*2);
GẤP ĐÔI 2
Cho số tự nhiên N không quá 9 chữ số. Hãy in ra giá trị gấp đôi của N.
Input
Dòng đầu ghi số bộ test. Mỗi bộ test có duy nhất một số tự nhiên không quá 9 chữ số.
Output
Ví dụ
Input Output
2 2
1 46
23
‘
#include<stdio.h>
int main(){
int t,i;
scanf("%d\n",&t);
for(i=0;i<t;i++){
int a;
scanf("%d",&a);
printf("%d\n",a*2);
}
}
BÌNH PHƯƠNG
Cho số tự nhiên N không quá 9 chữ số. Hãy in ra giá trị bình phương của N.
Input
Dòng đầu ghi số bộ test. Mỗi bộ test có duy nhất một số tự nhiên không quá 9 chữ số.
Output
Ví dụ
Input Output
2 1
1 529
23
#include<stdio.h>
int main(){
int t,i;
scanf("%d\n",&t);
for(i=0;i<t;i++){
long a;
scanf("%ld",&a);
long long s=a*a;
printf("%lld\n",s);
}
}
Cho số nguyên dương N không quá 9 chữ số. Hãy in ra giá trị thập phân 1/N.
Input
Dòng đầu ghi số bộ test. Mỗi bộ test có duy nhất một số nguyên dương không quá 9 chữ
số.
Output
Với mỗi bộ test, ghi ra kết quả trên một dòng với đúng 15 số sau dấu phẩy.
Ví dụ
Input Output
2 1.000000000000000
1 0.043478260869565
23
#include<stdio.h>
int main(){
int t,i;
scanf("%d\n",&t);
for(i=0;i<t;i++){
long a;
scanf("%ld",&a);
double s=(double)1/a;
printf("%.15lf\n",s);
}
}
PHÉP TOÁN CƠ BẢN 2
Hãy in ra lần lượt các giá trị: tổng, hiệu, tích, chia phần nguyên, chia phần dư, chia kết
quả thực (với đúng 2 chữ số sau dấu phẩy) của 2 số a,b đã cho.
Input
Output
Gồm 6 dòng lần lượt là kết quả của các phép tính theo thứ tự trong mô tả đề bài.
Ví dụ
Input Output
1 2 3
-1
0.50
#include<stdio.h>
int main(){
long a,b;
scanf("%ld %ld",&a,&b);
long long s=a+b;
long m=a-b;
long x=a/b;
float y=(float)a/b;
long z=a%b;
long long t=a*b;
printf("%lld\n",s);
printf("%ld\n",m);
printf("%lld\n",t);
printf("%ld\n",x);
printf("%ld\n",z);
printf("%.2f",y);
}
CHẴN LẺ
Cho một số nguyên dương N không quá 5 chữ số, hãy kiểm tra và in ra số đó chẵn hay lẻ.
Nếu chẵn ghi ra chữ CHAN, nếu ngược lại ghi ra chữ LE.
Input
Output
Ví dụ
Input Output
2 CHAN
9999 LE
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
if(n%2==0) printf("CHAN");
else printf("LE");
Cho một chữ cái bất kỳ. Hãy kiểm tra xem đó là chữ hoa hay chữ thường. Nếu là chữ
thường thì in ra chữ hoa, nếu là chữ hoa thì in ra chữ thường tương ứng.
Input
Dòng đầu ghi số bộ test. Mỗi bộ test có duy nhất một chữ cái.
Output
Ví dụ
Input Output
2 b
B Q
#include<stdio.h>
#include<string.h>
int main(){
int t,i;
scanf("%d",&t);
for(i=0;i<t;i++){
char n;
scanf("\n");
scanf("%c",&n);
if(n<='z' && n>='a'){
n=n-32;
printf("%c",n);
}
else {
n=n+32;
printf("%c",n);
}
printf("\n");
}
}
PHÉP CỘNG
Cho một phép toán có dạng a + b = c với a,b,c chỉ là các số nguyên dương có một chữ
số.
Input
Ouput
Ví dụ
Test 1 Test 2
Input Input
1 + 2 = 3 2 + 2 = 5
Output Output
YES NO
#include<stdio.h>
int main(){
int a,b,c;
scanf("%d + %d = %d",&a,&b,&c);
int s=a+b;
if(c==s) printf("YES");
else printf("NO");
}
PHƯƠNG TRÌNH BẬC NHẤT
Viết chương trình nhập 2 số thực a,b và in ra nghiệm của phương trình bậc nhất a*x+b=0.
Input
Output
Kết quả ghi ra trên một dòng tương ứng là “Vo nghiem” “Vo so nghiem” hoặc nghiệm
dưới dạng số thực có đúng 2 chữ số sau dấu phẩy.
Ví dụ
Input Output
2 -1 0.50
0 1 Vo nghiem
0 0 Vo so nghiem
#include <stdio.h>
int main()
{
float a;
float b;
float c;
scanf("%f %f",&a,&b);
if(a==0 && b!=0) printf("Vo nghiem");
else if(a==0 && b==0) printf ("Vo so nghiem");
else {
c=-b/a;
printf ("%.2f", c);
}
return 0;
}
Dữ liệu vào:
Ví dụ:
Input Output
2 55
10 210
20
#include <stdio.h>
int main() {
int a;
scanf ("%d",&a);
for (int i=0;i<a;i++)
{
long long n;
scanf ("%lld",&n);
printf ("%lld\n",(1+n)*n/2);
}
}
SỐ CHÍNH PHƯƠNG
Nhập một số nguyên dương không quá 9 chữ số. Hãy kiểm tra xem đó có phải số chính
phương hay không.
Input
Dòng đầu của dữ liệu vào ghi số bộ test, mỗi bộ test ghi một số nguyên dương N.
Output
Ví dụ
Input Output
3 NO
11 YES
YES
121
361
#include<stdio.h>
#include<math.h>
int main(){
int t,k;
scanf("%d",&t);
for(k=0;k<t;k++){
long n,i,x,y;
scanf("%ld",&n);
x=sqrt(n);
y=x*x;
if(y==n) printf("YES\n");
else printf("NO\n");
}
}
Input
Output
Ví dụ
Input Output
2 1.5000
#include<stdio.h>
int main(){
long long a;
double sum=0;
scanf("%lld",&a);
for(double i=1;i<=a;i++){
sum+=1/(double)i;
}
printf("%.4lf",sum);
return 0;
}
Input
Ví dụ
Input Output
3 9
#include<stdio.h>
int main(){
int n,i;
long x=1,s=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
x=x*i;
s=s+x;
}
printf("%ld",s);
}
TỔNG CHỮ SỐ 2
Hãy viết chương trình tính tổng các chữ số của một số nguyên bất kỳ.
Input
Dòng đầu tiên của dữ liệu vào ghi số bộ test, mỗi bộ test ghi trên một dòng 1 số nguyên
dương không quá 9 chữ số.
Output
Kết quả của mỗi bộ test cũng ghi trên một dòng.
Ví dụ
Input Output
1 10
1234
#include<stdio.h>
int main(){
int t,k;
scanf("%d",&t);
for(k=1;k<=t;k++){
long n;
scanf("%ld",&n);
long s=0;
while(n>0){
s=s+n%10;
n=n/10;
}
printf("%ld\n",s);
}
}
ƯỚC SỐ CHUNG LỚN NHẤT – BỘI SỐ CHUNG NHỎ NHẤT
Viết chương trình tìm ước số chung lớn nhất và bội số chung nhỏ nhất của hai số nguyên
dương a,b.
Input
Ouput
Kết quả ghi trên 2 dòng, dòng đầu là USCLN, dòng thứ 2 là BSCNN.
Ví dụ
Input Output
2 5 1
10
#include<stdio.h>
int main(){
long a,b,d;
scanf("%ld %ld",&a,&b);
long x=b,y=a;
while(a%b!=0){
d=a%b;
a=b;
b=d;
}
long UCLN=b;
long BCNN=x*y/UCLN;
printf("%ld\n%ld",UCLN,BCNN);
}
SỐ LỘC PHÁT
Một số được gọi là “lộc phát” nếu chỉ có các chữ số 0,6,8. Nhập vào một số nguyên
dương không quá 9 chữ số, hãy kiểm tra xem đó có phải số lộc phát hay không.
Input
Dòng đầu là số bộ test, mỗi dòng tiếp theo ghi một số cần kiểm tra.
Ouput
Ví dụ
Input Output
3 NO
181 YES
88888 YES
608868
#include<stdio.h>
#include<string.h>
int main(){
int n;
char a[1000000];
scanf("%d",&n);
while(n--){
scanf("\n");
gets(a);
int y=0;
for(int i=0;i<strlen(a);i++){
if(a[i] != '0' && a[i] != '6' && a[i] != '8') y=1;
break;
}
if(y==0) printf("YES\n");
else printf("NO\n");
}}
Viết chương trình kiểm tra một số nguyên dương bất kỳ (2 chữ số trở lên, không quá 9
chữ số) có chữ số bắt đầu và kết thúc bằng nhau hay không.
Input
Dòng đầu tiên ghi số bộ test. Mỗi bộ test viết trên một dòng số nguyên dương tương ứng
cần kiểm tra.
Output
Mỗi bộ test viết ra YES hoặc NO, tương ứng với bộ dữ liệu vào
Ví dụ
Input Output
2 YES
12451 NO
1000012
#include<stdio.h>
int main(){
int t;
scanf ("%d",&t);
while (t--){
long long a;
scanf ("%lld", &a);
int cuoi=a%10;
while (a>9) a/=10;
if (a==cuoi) printf ("YES\n");
else printf ("NO\n");
}
Viết chương trình kiểm tra một số có thỏa mãn tính chất tổng chữ số của nó chia hết cho
10 hay không.
Input
Dòng đầu tiên ghi số bộ test. Mỗi bộ test viết trên một dòng một số nguyên dương, ít nhất
2 chữ số nhưng không quá 9 chữ số.
Output
Mỗi bộ test viết ra YES hoặc NO tùy thuộc kết quả kiểm tra.
Ví dụ
Input Output
3 NO
3333 YES
555555 YES
123455
#include<stdio.h>
int main(){
int t,k;
scanf("%d",&t);
for(k=0;k<t;k++){
long n;
scanf("%ld",&n);
long s=0;
while(n>0){
s=s+n%10;
n=n/10;
}
if(s%10==0) printf("YES\n");
else printf("NO\n");
}
}
SỐ NGUYÊN TỐ
Viết chương trình kiểm tra một số nguyên dương có phải số nguyên tố hay không.
Input
Dòng đầu của dữ liệu vào ghi số bộ test. Mỗi dòng tiếp theo có một nguyên dương không quá 9
chữ số.
Output
Ví dụ:
Input Output
3 NO
123456 YES
997 NO
111111111
#include<stdio.h>
int main()
{
long long a;
scanf("%lld",&a);
while(a--){
long m;
scanf("%ld",&m);
int kt=0;
if (m<2) printf("NO\n");
else {
for (int i=2;i*i<=m;i++) {
if (m%i==0) {
kt=1;
break;
}
}
if (kt==1) printf("NO\n");
else printf("YES\n");
}
}
}
Viết chương trình liệt kê các số nguyên tố nhỏ hơn N với N là một số nguyên dương không quá
106.
Input
Output
Kết quả ghi mỗi số nguyên tố trên một dòng, theo thứ tự từ nhỏ đến lớn.
Ví dụ:
Input Output
10 2
3
5
#include <stdio.h>
#include <math.h>
int songuyento(int i)
{
int kt=1;
if(i<2)
kt=0;
else{
for(int k=2;k<=sqrt(i);k++)
{
if(i%k==0){
kt=0;
break;
}
} }
if(kt==0)
return 0;
else
return 1;
}
int main()
{
int i,c;
scanf("%d",&i);
for(int k=1;k<=i;k++)
{
if(songuyento(k)==1)
printf("%d\n",k);
}
}
Viết chương trình liệt kê N số nguyên tố đầu tiên với N là một số nguyên dương không quá 105.
Input
Dữ liệu vào chỉ có duy nhất một số N.
Output
Kết quả ghi mỗi số nguyên tố trên một dòng, theo thứ tự từ nhỏ đến lớn.
Ví dụ:
Input Output
5 2
11
#include<stdio.h>
#include<math.h>
int snt(int a){
if(a<2) return 0;
else{
int kt=0;
for(int i=2;i<=sqrt(a);i++){
if(a%i==0){
kt=1;
break;
}
}
if(kt==1 ) return 0;
else return 1;
}
}
int main(){
int t,d=0;
long long k;
scanf("%d",&t);
for(k=1;k>=1;k++){
if(snt(k)==1)
{
d++;
printf("%d\n",k);
}
if(d==t){
break;
}
}
}
Viết chương trình nhập hai số nguyên dương a,b thỏa mãn 2<a<b<100.
Một cặp số (i,j) được gọi là nguyên tố cùng nhau nếu i ≠ j và ước số chung lớn nhất của i với j là
1
Hãy liệt kê các cặp số nguyên tố cùng nhau trong đoạn [a,b] theo thứ tự từ nhỏ đến lớn.
Input
Output
Các cặp số i,j thỏa mãn được viết lần lượt trên từng dòng theo định dạng (i,j), theo thứ tự từ điển.
Ví dụ
Input Output
5 8 (5,6)
(5,7)
(5,8)
(6,7)
(7,8)
Viết chương trình phân tích một số nguyên thành các thừa số nguyên tố.
Input
Dòng đầu ghi số bộ test, mỗi bộ test ghi trên một dòng số nguyên dương cần phân tích
(không quá 9 chữ số) .
Output
Kết quả của mỗi bộ test ghi trên một dòng, mỗi thừa số cách nhau một khoảng trống.
Ví dụ
Input Output
2 2 5
10 2 2 5
20
#include<stdio.h>
int main(){
int t,k;
scanf("%d",&t);
for(k=0;k<t;k++){
long n,i;
scanf("%ld",&n);
for(i=2;i<=n;i++){
long d=n;
while(n%i==0){
printf("%ld ",i);
n=n/i;
}
}
printf("\n");
}
}
PHÂN TÍCH THỪA SỐ NGUYÊN TỐ 3
Hãy phân tích một số nguyên dương thành tích các thừa số nguyên tố.
Input
Dòng đầu tiên ghi số bộ test. Mỗi bộ test viết trên một dòng số nguyên dương n không quá 9 chữ
số.
Output
Mỗi bộ test viết ra thứ tự bộ test, sau đó lần lượt là các số nguyên tố khác nhau có trong tích, với
mỗi số viết thêm số lượng số đó. Xem ví dụ để hiểu rõ hơn về cách viết kết quả.
Ví dụ
Input Output
3 Test 1: 2(2) 3(1) 5(1)
Test 2: 2(7)
60
Test 3: 2(4) 5(4)
128
10000
#include<stdio.h>
int b[10001];
int main(){
int t,k;
scanf("%d",&t);
for(k=0;k<t;k++){
long n,i;
scanf("%ld",&n);
printf("Test %d: ",k+1);
for(i=2;i<=n;i++){
long d=0;
while(n%i==0){
d++;
n=n/i;
}
if(d>0) printf("%ld(%ld) ",i,d);
}
printf("\n");
}
}
SỐ THUẬN NGHỊCH
Một số nguyên dương được gọi là số thuận nghịch nếu viết theo chiều ngược lại vẫn có
cùng giá trị với số ban đầu. Ví dụ số 121 là số thuận nghịch, số 123 không phải số thuận
nghịch.
Input
Dòng đầu ghi số bộ test, mỗi bộ test ghi một số nguyên dương không quá 18 chữ số
Output
Với mỗi bộ test, nếu đúng ghi ra YES, nếu sai ghi ra NO.
Ví dụ
Input Output
2 NO
123456789012345 YES
12345678987654321
#include<stdio.h>
int main(){
int t,k;
scanf("%d",&t);
for(k=0;k<t;k++){
long long n,i,s=0;
scanf("%lld",&n);
long long m=n;
while(n>0){
int d=n%10;
s=s*10+d;
n=n/10;
}
if(s==m) printf("YES");
else printf("NO");
printf("\n");
}
}
Viết chương trình liệt kê các số vừa nguyên tố, vừa thuận nghịch trong đoạn [a,b] với a,b là các
số nguyên dương thỏa mãn 10<a<b<106.
Input
Output
Với mỗi bộ test, ghi lần lượt các số thỏa mãn, mỗi số cách nhau một khoảng trống, mỗi dòng ghi
đúng 10 số. Khi hết một test thì bỏ trống một dòng trước khi ghi kết quả test tiếp theo.
Ví dụ
Input Output
2 101 131 151 181 191 313 353 373 383 727
123 140
131
#include<stdio.h>
#include<math.h>
int snt(long a){
if(a<2) return 0;
else{
int kt=0;
for(long i=2;i<=sqrt(a);i++){
if(a%i==0){
kt=1;
break;
}
}
if(kt==1 ) return 0;
else return 1;
}
}
int stn(int n){
int i,s=0,m=n;
while(n>0){
int d=n%10;
s=s*10+d;
n=n/10;
}
if(s==m) return 1;
else return 0;
}
int main(){
int t,k;
scanf("%d",&t);
for(k=0;k<t;k++){
int a,b,i,d=0;
scanf("%d %d",&a,&b);
for(i=a;i<=b;i++){
if(snt(i)==1 && stn(i)==1){
d++;
printf("%d ",i);
}
if(d==10){
printf("\n");
d=0;
}
}
printf("\n");
printf("\n");
}
Nhập vào 2 số tự nhiên m và n, sao cho m<n và cả hai số đều không quá 9 chữ số.
Hãy liệt kê các số chính phương trong đoạn [m,n].
Input
Dữ liệu vào chỉ bao gồm hai số m và n ghi trên một dòng.
Output
Dòng đầu tiên của kết quả ghi số lượng số chính phương tìm được. Tiếp theo, mỗi
số chính phương được ghi trên một dòng.
Ví dụ
Input Output
9 50 5
16
25
36
49
#include<stdio.h>
#include<math.h>
int scp(long a){
long x=sqrt(a);
if(x*x==a) return 1;
else return 0;
}
int main(){
long a,b,i,d=0,m,n;
scanf("%ld %ld",&a,&b);
for(i=a;i<=b;i++){
if(scp(i)==1){
m=i;
break;
}
}
for(i=b;i>=a+m;i--){
if(scp(i)==1) {
n=i;
break;
}
}
long x=sqrt(m),y=sqrt(n);
printf("%ld\n",y-x+1);
for(i=x;i<=y;i++){
long z=i*i;
printf("%ld\n",z);
}
CHỮ SỐ CHẴN LẺ 2
Nhập một số nguyên dương N không quá 9 chữ số. Hãy đếm xem N có bao nhiêu
chữ số lẻ và bao nhiêu chữ số chẵn.
Input
Dòng đầu của dữ liệu vào ghi số bộ test, mỗi bộ test ghi trên một dòng một số nguyên cần
kiểm tra.
Output
Kết quả in ra trên một dòng lần lượt là số chữ số lẻ và số chữ số chẵn, cách nhau một
khoảng trống.
Ví dụ
Input Output
2 2 2
1234 0 7
4444444
#include<stdio.h>
int main(){
int t,k;
scanf("%d",&t);
for(k=0;k<t;k++){
long n,i;
scanf("%ld",&n);
long d=0,e=0;
while(n>0){
i=n%10;
n=n/10;
if(i%2==0) d++;
else e++;
}
printf("%ld %ld\n",e,d);
}
}
Nhập vào kích thước chiều rộng, chiều cao và in ra hình chữ nhật các dấu * nhưng rỗng
bên trong. Các dấu * được in sát cạnh nhau.
Dữ liệu vào chỉ có 2 số nguyên dương là chiều rộng và chiều cao (không quá 40).
Ví dụ:
Input Output
5 4 *****
* *
* *
*****
#include<stdio.h>
int main(){
int m,n;
scanf("%d %d",&m,&n);
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++){
if(i==1 || i==n){
printf("*");
}
else {
if(j==1 || j==m){
printf("*");
}
else printf(" ");
}
}
printf("\n");
}
}
BỘI SỐ CHUNG - ƯỚC SỐ CHUNG
Tìm bội số chung nhỏ nhất và ước số chung lớn nhất của hai số nguyên dương a, b.
Input:
Output:
Ví dụ:
Input Output
2 10 5
5 10 56 2
14 8
#include<stdio.h>
#include<math.h>
int main(){
int k,t;
scanf("%d",&t);
for(k=0;k<t;k++){
long long a,b,LCM;
scanf("%lld %lld",&a,&b);
long long d,GCD=b,m=a;
while(a%GCD!=0){
d=a%GCD;
a=GCD;
GCD=d;
}
LCM=m*b/GCD;
printf("%lld %lld",LCM,GCD);
printf("\n");
}
return 0;
}
SỐ KHÔNG GIẢM
Một số nguyên dương được gọi là số không giảm nếu các chữ số từ trái qua phải tạo
thành dãy không giảm. Ví dụ số số 123 là số không giảm, số 121 không phải.
Viết chương trình kiểm tra một số có phải số không giảm hay không.
Input
Dòng đầu ghi số bộ test, mỗi bộ test ghi một số nguyên dương không quá 18 chữ số
Output
Với mỗi bộ test, nếu đúng ghi ra YES, nếu sai ghi ra NO.
Ví dụ
Input Output
2 NO
1234567890676543 YES
11223334445555689
#include<stdio.h>
int main(){
int t;
scanf("%d\n",&t);
long long a;
while(t--){
scanf("%lld",&a);
int e=a%10;
int kt=0;
while(a>0){
int d=a%10;
if(d>e){
kt=1;
break;
}
e=d;
a/=10;
}
if(kt==0)printf("YES");
else printf("NO");
printf("\n");
}
}
SỐ CHẴN TRONG DÃY
Viết chương trình in ra các số chẵn trong một dãy số cho trước.
Input: Dòng đầu ghi số bộ test. Mỗi test gồm 2 dòng, dòng đầu ghi số N là số phần tử của dãy.
Dòng sau ghi N số của dãy. N không quá 100, các số trong dãy đều nguyên dương và không quá
1000.
Output: Với mỗi bộ test ghi trên một dòng lần lượt là các số chẵn của dãy số ban đầu, theo thứ
tự xuất hiện.
Ví dụ :
Input Output
1 2 4
1 2 3 4 5
#include<stdio.h>
int main(){
int t;
scanf("%d\n",&t);
while(t--){
int n,i;
scanf("%d\n",&n);
int a[n];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n;i++){
if(a[i]%2==0){
printf("%d ",a[i]);
}
}
printf("\n");
}
}
SỐ NGUYÊN TỐ TRONG DÃY
Viết chương trình in ra các số nguyên tố trong một dãy số cho trước.
Input: Dòng đầu ghi số bộ test. Mỗi test gồm 2 dòng, dòng đầu ghi số N là số phần tử của dãy.
Dòng sau ghi N số của dãy. N không quá 100, các số trong dãy đều nguyên dương và không quá
1000.
Output: Với mỗi bộ test ghi trên một dòng lần lượt là các số nguyên tố của dãy số ban đầu, theo
thứ tự xuất hiện.
Ví dụ :
Input Output
1 2 3 5
1 2 3 4 5
#include<stdio.h>
#include<math.h>
int snt(long a){
if(a<2) return 0;
else{
int kt=0;
for(long i=2;i<=sqrt(a);i++){
if(a%i==0){
kt=1;
break;
}
}
if(kt==1 ) return 0;
else return 1;
}
}
int main(){
int t;
scanf("%d\n",&t);
while(t--){
int n,i;
scanf("%d\n",&n);
int a[n];
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n;i++){
if(snt(a[i])==1){
printf("%d ",a[i]);
}
}
printf("\n");
}
}
MẢNG ĐỐI XỨNG
Nhập một dãy số nguyên có n phần tử (n không quá 100, các phần tử trong dãy không quá 10 9).
Hãy viết chương trình kiểm tra xem dãy có phải đối xứng hay không. Nếu đúng in ra YES, nếu
sai in ra NO.
Input: Dòng đầu ghi số bộ test, mỗi bộ test gồm hai dòng. Dòng đầu là số phần tử của dãy, dòng
sau ghi ra dãy đó, mỗi số cách nhau một khoảng trống.
Ví dụ:
Input Ouput
2 YES
4 NO
1 4 4 1
1 5 5 5 3
#include<stdio.h>
int main(){
int t;
scanf("%d",&t);
while(t--){
int n,i,kt=0;
scanf("%d",&n);
long a[n];
for(i=0;i<n;i++){
scanf("%ld",&a[i]);
}
for(i=0;i<n/2;i++){
if(a[i]!=a[n-i-1]){
kt=1;
break;
}
}
if(kt!=0) printf("NO\n");
else printf("YES\n");
}
}
SỐ FIBONACCI
Dãy số Fibonacci được định nghĩa theo công thức như sau:
F1 = 1
F2 = 1
Viết chương trình tính số Fibonacci thứ n (với n không quá 92)
Ví dụ
Input Output
3 1
2 5
5 6765
20
#include <stdio.h>
long long Fibonacci(long long n)
{
long long a1 = 1, a2 = 1;
if(n==1||n==2)return 1;
long long i = 3;
long long a;
while (i <= n)
{
a = a1 + a2;
a1 = a2;
a2 = a;
i++;
}
return a;
}
int main()
{
long long t;
scanf ("%lld",&t);
while (t--)
{
long long n;
scanf("%lld", &n);
printf("%lld\n",Fibonacci(n));
}
}
SỐ LỚN NHẤT
Viết chương trình tìm số lớn nhất trong một dãy số cho trước.
Input: Dòng đầu ghi số bộ test. Mỗi test gồm 2 dòng, dòng đầu ghi số N là số phần tử của dãy.
Dòng sau ghi N số của dãy. N không quá 100, các số trong dãy đều nguyên dương và không quá
1000.
Ví dụ:
Input Output
1 9
7 26
3598429
#include<stdio.h>
int main(){
int t;
scanf("%d\n",&t);
while(t--){
int n,i;
scanf("%d\n",&n);
int a[n],m=0;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
if(a[i]>m) m=a[i];
}
printf("%d\n",m);
for(i=0;i<n;i++){
if(a[i]==m) printf("%d ",i);
}
printf("\n");
}
}
CHÈN MẢNG 2
Nhập 2 mảng (a, N) và (b, M) và số nguyên p (0≤p<M<=N<100). Hãy chèn mảng b vào vị trí p
của mảng a.
Input: Dòng đầu ghi số bộ test, mỗi bộ test gồm 3 dòng: dòng đầu ghi 3 số N,M,p. Dòng thứ 2
ghi N số của mảng a. Dòng thứ 3 ghi M số của mảng b.
Output: ghi ra thứ tự bộ test, rồi xuống dòng và dãy số kết quả sau khi chèn.
Ví dụ:
Input Output
1 Test 1:
431 5 2 9 11 3 6 7
5367
2 9 11
#include <stdio.h>
int main(){
int t,k;
scanf("%d",&t);
for(k=0;k<t;k++){
int m,n,i,j,x;
scanf("%d %d %d",&m,&n,&x);
int a[m],b[n];
for(i=0;i<m;i++){
scanf("%d",&a[i]);
}
for(i=0;i<n;i++){
scanf("%d",&b[i]);
}
printf("Test %d:\n",k+1);
for(i=0;i<x;i++){
printf("%d ",a[i]);
}
for(i=x;i<x+n;i++){
printf("%d ",b[i-x]);
}
for(i=x+n;i<m+n;i++){
printf("%d ",a[i-n]);
}
printf("\n");
}