You are on page 1of 173

CHỮ SỐ CHẴN LẺ 1

Bài làm tốt nhất


Cho 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. 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

Chỉ có một dòng ghi số N

Output

Ghi số chữ số lẻ rồi đến số chữ số chẵn

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

Bài làm tốt nhất


Viết chương trình nhập mảng n (1<n<100) phần tử số nguyên dương. Các giá trị trong
mảng không quá 1000. 

Đế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

Dòng 1 ghi số n. Dòng 2 ghi n số của mảng.  

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

Bài làm tốt nhất


Một số được coi là đẹp nếu nó là số nguyên tố và tổng chữ số là một số trong dãy Fibonaci. Viết
chương trình liệt kê trong một đoạn giữa hai số nguyên cho trước có bao nhiêu số đẹp như vậy

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++){

if(nt(i)==1 && fb(i)==1) printf("%d ",i);


}

TÍNH TỔNG

Bài làm tốt nhất


Cho hai số nguyên (có thể âm) có giá trị tuyệt đối không quá 106.
Viết chương trình tính tổng hai số 

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

Ví dụ

Input Output
10 2 12
#include<stdio.h>
int main(){
int a,b;
scanf("%d %d",&a,&b);
printf("%d",a+b);
}

PHÉP TOÁN CƠ BẢN 1

Bài làm tốt nhất


Nhập 2 số nguyên dương a,b không quá 1000.
Hãy in ra lần lượt các giá trị: tổng, hiệu, tích, chia kết quả thực (với đúng 2 chữ số sau
dấu phẩy) và chia phần dư của 2 số a,b đã cho.

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

Chỉ có 2 số a,b trên một dòng.

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;

printf("%d %d %d %.2f %d",tong,hieu,tich,chia,cd);

HÌNH CHỮ NHẬT

Bài làm tốt nhất


Cho độ dài hai cạnh của hình chữ nhật. Giá trị không quá 104.  

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);

if(a<=0 || b<=0) printf("0");


else{

long c,s;

c=(a+b)*2;

s=a*b;

printf("%ld %ld",c,s);

CHUYỂN ĐỔI THANG ĐO NHIỆT ĐỘ

Bài làm tốt nhất


Công thức chuyển đơn vị đo nhiệt độ từ C sang F như sau:

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

In kết quả trên một dòng.

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);

CHUYỂN ĐỔI NGÀY THÁNG

Bài làm tốt nhất


Viết chương trình nhập vào số ngày, thực hiện chuyển số ngày sang năm, tuần, ngày (bỏ
qua trường hợp năm nhuận). 

Input

Có duy nhất một dòng ghi số ngảy, không quá 1000.  

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);

PHƯƠNG TRÌNH BẬC HAI

Bài làm tốt nhất


Viết chương trình nhập 3 số thực a,b,c và in ra nghiệm của phương trình bậc hai a*x2 +
b*x + c = 0.

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);

TÍNH TỔNG TRONG ĐOẠN

Bài làm tốt nhất


Cho hai số nguyên dương a,b không quá 106.

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.

(Lưu ý có thể nhập a lớn hơn b)


Input

Chỉ có một dòng ghi hai số nguyên dương a,b (không quá 6 chữ số)

Output

Ghi ra kết quả trên một dòng

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

Bài làm tốt nhất


Cho số nguyên dương N (không quá 9). In ra lần lượt kết quả phép nhân của N với các số
từ 1 đến 10, mỗi giá trị cách nhau một khoảng trống 

Input

Có duy nhất một dòng ghi số nguyên dương N (1 ≤ N ≤ 9).

Output

In kết quả trên một dòng.

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Ố

Bài làm tốt nhất


Cho số nguyên dương N không quá 9 chữ số.

Hãy đếm xem N có bao nhiêu chữ số.

Input

Chỉ có một số nguyên dương N không quá 9 chữ số. 

Output

Ghi ra kết quả trên một dòng

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

Bài làm tốt nhất


Viết chương trình nhập vào một số nguyên dương N không quá 9 chữ số.

In ra chữ số đầu tiên và cuối cùng của N.

Input

Chỉ có một số nguyên dương N không quá 9 chữ số. 

Output

Ghi ra kết quả trên một dòng

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);

THAY ĐỔI ĐẦU CUỐI

Bài làm tốt nhất


Cho một số nguyên dương n không quá 9 chữ số.

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

Chỉ có một số nguyên dương N không quá 9 chữ số. 

Output

Ghi ra kết quả trên một dòng

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

Bài làm tốt nhất


Viết chương trình nhập vào một số n không quá 109, thực hiện tìm tổng các chữ số của n
và in ra màn hình.

Input:

Chỉ có một dòng ghi số n.

Output:

Ghi ra kết quả tính toán


Ví dụ: 

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Ố

Bài làm tốt nhất


Cho một số nguyên dương N.

Thực hiện tìm tích của các chữ số và in ra màn hình.

Input

Chỉ có một dòng ghi số nguyên dương N (không quá 9 chữ số)

Output

Ghi ra kết quả trên một dòng


Ví dụ

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

Bài làm tốt nhất


Số hoàn hảo là số có tổng các ước số (nhỏ hơn chính nó) bằng nó. Ví dụ: 6 = 1 + 2 + 3.

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

Chỉ có một dòng ghi số N (không quá 6 chữ số)

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");

SỐ HOÀN HẢO NHỎ HƠN N

Bài làm tốt nhất


Số hoàn hảo là số có tổng các ước số (nhỏ hơn chính nó) bằng nó. Ví dụ: 6 = 1 + 2 + 3.

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:

Chỉ có một dòng ghi số n.


Output:

Ghi ra kết quả tính toán trên một dòng

Ví dụ: 

Input Output
1000 6 28 496
 #include<stdio.h>

#include<math.h>

int shh(int n){

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++){

if(shh(i)==1) printf("%d ",i);

SỐ HOÀN HẢO TRONG ĐOẠN

Bài làm tốt nhất


Viết chương trình C cho phép nhập vào hai số a và b (không quá 6 chữ số, a có thể lớn
hơn b). Thực hiện liệt kê các số hoàn hảo nằm trong đoạn từ [a,b].

Input:

Chỉ có một dòng ghi hai số a,b.

Output:

Ghi ra kết quả tính toán trên một dòng

Ví dụ: 

Input Output
1 1000 6 28 496
 #include<stdio.h>

#include<math.h>

int shh(int n){

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++){

if(shh(i)==1) printf("%d ",i);

 SỐ STRONG

Bài làm tốt nhất


Số Strong là số thỏa mãn có tổng giai thừa các chữ số của nó bằng chính nó. Ví dụ: 145 =
1! + 4! + 5!

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

Chỉ có một dòng ghi số N (không quá 6 chữ số)

Output

Ghi ra 1 hoặc 0

Ví dụ
Input Output
145 1
#include<stdio.h>

int gt(int a){

long s=1;

for(int i=1;i<=a;i++){

s=s*i;

return s;

int sst(int n){

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");
}

SỐ STRONG NHỎ HƠN N

Bài làm tốt nhất


Số Strong là số thỏa mãn có tổng giai thừa các chữ số của nó bằng chính nó. Ví dụ: 145 =
1! + 4! + 5!

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:

Chỉ có một dòng ghi số n.

Output:

Ghi ra kết quả tính toán trên một dòng

Ví dụ: 

Input Output
1000 1 2 145
#include<stdio.h>

int gt(int a){

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++){

if(sst(i)==1) printf("%d ",i);

SỐ STRONG TRONG ĐOẠN


Bài làm tốt nhất
Viết chương trình C cho phép nhập vào hai số a và b (a có thể lớn hơn b). Liệt kê các sô
Strong nằm trong đoạn a,b.

Các kết quả thỏa mãn liệt kê cách nhau một khoảng trống.

Input:

Chỉ có một dòng ghi hai số a,b.

Output:

Ghi ra kết quả tính toán trên một dòng

Ví dụ: 

Input Output
1 1000 1 2 145
#include<stdio.h>

int gt(int a){

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 a,b,i;

scanf("%d %d",&a,&b);

if(a>b){

int d=a;

a=b;

b=d;

for(i=a;i<=b;i++){

if(sst(i)==1) printf("%d ",i);

KIỂM TRA SỐ FIBONACCI 1

Bài làm tốt nhất


Nhập vào một số n không quá 8 chữ số và kiểm tra số đó có thuộc dãy Fibonacci hay
không. Nếu thỏa mãn in ra 1, ngược lại in ra 0.

Input:

Chỉ có một số nguyên dương, không quá 8 chữ số.

Output:

In ra kết quả kiểm tra

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;

if(n==0 || n==1) printf("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");

 LIỆT KÊ N SỐ FIBONACCI ĐẦU TIÊN

Bài làm tốt nhất


Nhập vào số nguyên dương n không quá 30.

In ra màn hình n số đầu tiên thuộc dãy Fibonacci (tính từ số 0).

Input:

Chỉ có một dòng ghi số n.

Output:

Ghi ra kết quả tính toán trên một dòng

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]);

 HÌNH VUÔNG DẤU *

Bài làm tốt nhất


Viết chương trình nhập vào n là cạnh của hình vuông và in ra hình vuông các ký tự *.

Giá trị n không quá 100. 

Input

Chỉ có một số nguyên dương N không quá 100.

Output

Ghi ra kết quả theo mẫu.

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");

HÌNH VUÔNG RỖNG VỚI DẤU *

Bài làm tốt nhất


Viết chương trình nhập vào n (không quá 100) là cạnh của hình vuông và thực hiện in ra
hình vuông rỗng các ký tự * theo mẫu trong ví dụ.

Input
Chỉ có một số nguyên dương N không quá 100.

Output

Ghi ra kết quả theo mẫu.

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++){

if(i==1 || i==n ) printf("*");

else {

if(j==1 || j==n) printf("*");

else printf(".");

printf("\n");

}
}

HÌNH BÌNH HÀNH CÁC DẤU *

Bài làm tốt nhất


Viết chương trình nhập vào N (không quá 100) là độ dài cạnh hình bình hành. Thực hiện
in ra hình bình hành tương ứng theo mẫu trong ví dụ.

Input

Chỉ có một số nguyên dương N không quá 100.

Output

Ghi ra kết quả theo mẫu.

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");

HÌNH BÌNH HÀNH RỖNG

Bài làm tốt nhất


Viết chương trình nhập vào n (không quá 100) là độ dài cạnh hình bình hành. Thực hiện
in ra hình bình hành rỗng tương ứng theo mẫu trong ví dụ.

Input

Chỉ có một số nguyên dương N không quá 100.


Output

Ghi ra kết quả theo mẫu.

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++){

if(i==1 || i==n) printf("*");

else{

if(j==1 || j==n) printf("*");

else printf(".");

}
}

printf("\n");

 HÌNH BÌNH HÀNH NGƯỢC

Bài làm tốt nhất


Viết chương trình nhập vào số hàng và cột của hình bình hành (không quá 100). Thực
hiện in ra hình bình hành ngược theo mẫu trong ví dụ.

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

Ghi ra kết quả theo mẫu.

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");

 HÌNH BÌNH HÀNH NGƯỢC - RỖNG

Bài làm tốt nhất


Viết chương trình nhập vào hàng và cột của hình bình hành (không quá 100). Thực hiện
in hình bình hành ngược và rỗng theo mẫu trong ví dụ.

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

Ghi ra kết quả theo mẫu.

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++){

if(i==1 || i==n) printf("*");

else{

if(j==1 || j==m) printf("*");

else printf(".");

printf("\n");

}
 TAM GIÁC VUÔNG TRÁI

Bài làm tốt nhất


Viết chương trình nhập vào chiều cao của tam giác (không quá 100) và In ra tam giác
hình sao tương ứng theo mẫu trong ví dụ.

Input

Chỉ có một số dòng ghi chiều cao (không quá 100).

Output

Ghi ra kết quả theo mẫu.

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");
}
}

TAM GIÁC VUÔNG TRÁI - RỖNG

Bài làm tốt nhất


Viết chương trình nhập vào chiều cao của tam giác (không quá 100) và In ra tam giác
hình sao rỗng tương ứng theo mẫu trong ví dụ.

Input

Chỉ có một số dòng ghi chiều cao (không quá 100).

Output

Ghi ra kết quả theo mẫu.

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");
}
}

 TAM GIÁC VUÔNG PHẢI

Bài làm tốt nhất


Viết chương trình nhập vào chiêu cao của tam giác (không quá 100) và thực hiện in ra
tam giác vuông theo mẫu trong ví dụ.

Input

Chỉ có một số dòng ghi chiều cao (không quá 100).

Output

Ghi ra kết quả theo mẫu.

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");
}
}

HÌNH CHỮ NHẬT - 1


Bài làm tốt nhất
Nhập vào số hàng và số cột của hình chữ nhật (không quá 9). Vẽ hình chữ nhật số 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á 9).

Output

Ghi ra kết quả theo mẫu.

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

Bài làm tốt nhất


Nhập vào số hàng và số cột của hình chữ nhật (không quá 9). Vẽ hình chữ nhật số 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á 9).

Output

Ghi ra kết quả theo mẫu.

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");
}
}
}

HÌNH CHỮ NHẬT - 3

Bài làm tốt nhất


Nhập vào số hàng và số cột của hình chữ nhật (không quá 9). Vẽ hình chữ nhật số 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á 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");
}
}
}

HÌNH CHỮ NHẬT - 4

Bài làm tốt nhất


Nhập vào số hàng và số cột của hình chữ nhật (không quá 9). Vẽ hình chữ nhật số 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á 9).

Output

Ghi ra kết quả theo mẫu.

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");
}
}
}

SO SÁNH TỔNG CHỮ SỐ

Bài làm tốt nhất


Viết chương trình nhập vào 2 số nguyên dương a và b không quá 6 chữ số. Hãy so sánh và xếp
lại theo thứ tự tăng dần tổng các chữ số.
(Nếu a và b có tổng các chữ số bằng nhau thì in ra a trước)

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);
}

XUẤT HIỆN NHIỀU HƠN MỘT LẦN

Bài làm tốt nhất


Viết chương trình nhập vào mảng một chiều n phần tử (1 < n < 100) và thực hiện in ra
các phần tử xuất hiện nhiều hơn 1 lần trong mảng theo thứ tự xuất hiện (Nếu không có
phần tử nào thỏa mãn in ra 0).

Input

Dòng 1 ghi số n. Dòng 2 ghi n số của mảng.  

Output

Ghi ra kết quả trên một dòng.

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");
}

 ĐẾM SỐ LẦN XUẤT HIỆN 1

Bài làm tốt nhất


Viết chương trình nhập vào mảng một chiều n phần tử (1 < n < 100) và thực hiện in ra
các phần tử cùng số lần xuất hiện của chúng trong mảng. Các phần tử liệt kê theo thứ tự
xuất hiện.

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

Bài làm tốt nhất


Viết chương trình nhập vào mảng A một chiều n phần tử (1 < n < 100) và mảng B một
chiều m phần tử (1 < m < 100). Thực hiện chèn mảng B vào mảng A tại vị trí P và in ra
mảng kết quả.

Input

Dòng thứ nhất là số phần tử của mảng A và mảng B

Dòng thứ hai là các phần tử của mảng A

Dòng thứ ba là các phần tử của mảng B

Dòng thứ tư là vị trí chèn

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

Ghi ra dãy kết quả trên một dòng.

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]);
}
}

ĐẢO NGƯỢC MẢNG SỐ

Bài làm tốt nhất


Viết chương trình nhập vào mảng A gồm n phần tử (1 < n < 100). Thực hiện đảo ngược
mảng và in ra kết quả.

Input

Dòng thứ nhất là số phần tử của mảng A.

Dòng thứ hai là các phần tử của mảng A

Các phần tử không vượt quá 1000.

Output

Ghi ra dãy kết quả trên một dòng.

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Ẻ

Bài làm tốt nhất


Viết chương trình nhập vào mảng A gồm n phần tử (1 < n < 100). Các giá trị trong dãy
không quá 1000. Thực hiện tách mảng đã cho thành mảng các số chẵn và mảng các số lẻ.

Input

Dòng thứ nhất là số phần tử của mảng A.

Dòng thứ hai là các phần tử của mảng A

Các phần tử không vượt quá 1000.

Output

Dòng thứ nhất là mảng các số chẵn

Dòng thứ hai là mảng các số lẻ.

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]);
}
}

SẮP XẾP TĂNG

Bài làm tốt nhất


Viết chương trình nhập vào mảng A gồm n phần tử (1 < n < 100). Thực hiện sắp xếp tăng
dần các phần tử của mảng và in ra màn hình.

Input

Dòng thứ nhất là số phần tử của mảng A.

Dòng thứ hai là các phần tử của mảng A

Các phần tử không vượt quá 1000.


Output

Ghi ra kết quả trên một dòng.

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]);
}
}

SẮP XẾP GIẢM

Bài làm tốt nhất


Viết chương trình nhập vào mảng A gồm n phần tử (1 < n < 100). Thực hiện sắp xếp
giảm dần các phần tử của mảng và in ra màn hình.

Input

Dòng thứ nhất là số phần tử của mảng A.

Dòng thứ hai là các phần tử của mảng A

Các phần tử không vượt quá 1000.

Output

Ghi ra kết quả trên một dòng.

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

Bài làm tốt nhất


Viết chương trình nhập vào mảng A gồm n phần tử (1 < n < 100). Thực hiện dịch n phần
tử của mảng sang trái và In ra mảng kết quả.

Input
Dòng thứ nhất là số phần tử của mảng A.

Dòng thứ hai là các phần tử của mảng A

Dòng thứ 3 là số lượng phần tử cần dịch trái.

Các phần tử không vượt quá 1000.

Output

Ghi ra kết quả trên một dòng.

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

Bài làm tốt nhất


Viết chương trình nhập vào mảng A gồm n phần tử (1 < n < 100). Thực hiện dịch n phần
tử của mảng sang phải và In ra mảng kết quả

Input

Dòng thứ nhất là số phần tử của mảng A.

Dòng thứ hai là các phần tử của mảng A

Dòng thứ 3 là số lượng phần tử cần dịch phải.

Các phần tử không vượt quá 1000.

Output

Ghi ra kết quả trên một dòng.

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]);
}

LỚN NHẤT VÀ LỚN THỨ HAI

Bài làm tốt nhất


Viết chương trình nhập vào mảng A có n phần tử số nguyên (2 < n < 100). Tìm giá trị lớn
nhất và lớn thứ hai trong mảng.

 
Dữ liệu vào đảm bảo dãy có ít nhất 2 số khác nhau.

Input

Dòng thứ nhất là số phần tử của mảng A.

Dòng thứ hai là các phần tử của mảng A

Output

Ghi ra kết quả trên một dòng.

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);
}

XUẤT HIỆN ĐÚNG MỘT LẦN

Bài làm tốt nhất


Viết chương trình cho phép nhập vào mảng A có n phần tử số nguyên (2 < n < 100). Đếm
các phần tử chỉ xuất hiện một lần và liệt kê.

Input

Dòng thứ nhất là số phần tử của mảng A.


Dòng thứ hai là các phần tử của mảng A

Output

- Dòng đầu tiên là số các phần tử thỏa mãn

- Dòng thứ hai là các phần tử thỏa mãn.

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]);
}
}
}

NHỎ NHẤT VÀ NHỎ THỨ HAI

Bài làm tốt nhất


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). Tìm giá trị
nhỏ nhất và nhỏ thứ hai và in ra.

Dữ liệu vào đảm bảo luôn có ít nhất 2 số khác nhau.

Input

Dòng thứ nhất là số phần tử của mảng A.

Dòng thứ hai là các phần tử của mảng A

Output

- Giá trị nhỏ nhất và giá trị nhỏ thứ hai

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

Bài làm tốt nhất

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

Dòng thứ nhất là số phần tử của mảng A.

Dòng thứ hai là các phần tử của mảng A

Output

- Dòng đầu tiên là số các phần tử thỏa mãn

- Dòng thứ hai là các phần tử thõa mãn

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]);

CHUYỂN THÀNH CHỮ HOA

Bài làm tốt nhất

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:

Chỉ có một dòng ghi xâu S.

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Ự

Bài làm tốt nhấ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:

Chỉ có một dòng ghi xâu S.

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);
}

 LOẠI BỎ TRÙNG NHAU

Bài làm tốt nhất

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

Dòng thứ nhất là số phần tử của mảng A.

Dòng thứ hai là các phần tử của mảng A

Output

Ghi ra kết quả trên một dòng

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]);

HÌNH CHỮ NHẬT KÝ TỰ - 1

Bài làm tốt nhất


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

Ghi ra kết quả theo mẫu.

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");
}
}
}

HÌNH CHỮ NHẬT KÝ TỰ - 2

Bài làm tốt nhất

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

Ghi ra kết quả theo mẫu.

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

Bài làm tốt nhất

Nhập vào chiều cao tam giác (không quá 20).

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

Chỉ có một số dòng ghi chiều cao (không quá 20).

Output

Ghi ra kết quả theo mẫu.

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

Bài làm tốt nhất

Nhập vào chiều cao tam giác (không quá 20).

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

Chỉ có một số dòng ghi chiều cao (không quá 20).

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");
}
}

HÌNH CHỮ NHẬT KÝ TỰ - 3

Bài làm tốt nhất

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

Ghi ra kết quả theo mẫu.

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");
}
}

HÌNH CHỮ NHẬT KÝ TỰ - 4

Bài làm tốt nhất

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

Ghi ra kết quả theo mẫu.

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");
}

LOẠI BỎ TỪ TRONG XÂU

Bài làm tốt nhất

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:

Dòng đầu ghi xâu S1 (độ dài không quá 100).

Dòng thứ 2 ghi từ S2.

Output:

Ghi ra xâu S1 sau khi đã loại bỏ các từ S2.

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]);
}
}

LOẠI CÁC TỪ TRÙNG NHAU

Bài làm tốt nhất

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:

Chỉ có một dòng ghi xâu S.

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Ố

Bài làm tốt nhất


Viết chương trình nhập vào ba số nguyên có trị tuyệt đối không quá 6 chữ số. Tìm 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

Ghi ra số nhỏ nhất.

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

Bài làm tốt nhất

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

Có duy nhất một số tự nhiên không quá 7 chữ số.

Output

Ghi ra kết quả trên một dòng.

Ví dụ

Input Output
23 46
 

#include<stdio.h>
int main(){
int a;
scanf("%d",&a);
printf("%d",a*2);

GẤP ĐÔI 2

Bài làm tốt nhất

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ới mỗi bộ test, ghi ra kết quả trên một dòng.

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

Bài làm tốt nhất

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ới mỗi bộ test, ghi ra kết quả trên một dòng.

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);
}
}

GIÁ TRỊ THẬP PHÂN

Bài làm tốt nhất

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

Bài làm tốt nhất

Nhập 2 số nguyên dương a,b không quá 6 chữ số.

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.

Mỗi kết quả tính toán ghi trên một dòng

Input

Chỉ có 2 số a,b trên một dòng.

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Ẻ

Bài làm tốt nhất

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

Chỉ có một dòng ghi số N

Output

Ghi ra kết quả trên một dòng.

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");

CHỮ HOA – CHỮ THƯỜNG

Bài làm tốt nhất

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ới mỗi bộ test, ghi ra kết quả trên một dòng.

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

Bài làm tốt nhất

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ố.

Hãy kiểm tra xem phép toán đó có đúng hay không.

Input

Chỉ có một dòng ghi ra phép toán (gồm đúng 9 ký tự)

Ouput

Ghi ra YES nếu phép toán đó đúng. Ghi ra NO nếu sai.

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

Bài làm tốt 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

Chỉ có một dòng ghi hai số a,b.

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;
}

TÍNH TỔNG 1 ĐẾN N

Bài làm tốt nhất

Cho số nguyên dương N. 

Hãy tính S = 1 + 2 + ... + N

Dữ liệu vào: 

 Dòng đầu ghi số bộ test, không quá 10


 Mỗi dòng ghi một số nguyên dương N, không quá 109
Kết quả:

Với mỗi test, ghi kết quả trên một dòng.

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

Bài làm tốt nhất

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

Ghi ra YES nếu đúng và NO nếu không.

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");
}
}

TÍNH TỔNG PHÂN THỨC

Bài làm tốt nhất

Viết chương trình tính tổng  S = 1 + ½ + 1/3 + … + 1/N

Input

Dữ liệu vào chỉ có 1 dòng ghi số N không quá 6 chữ số. 

Output

Kết quả ghi chính xác với 4 số phần thập phân. 

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;
}

TÍNH TỔNG GIAI THỪA

Bài làm tốt nhất

Viết chương trình tính tổng  S = 1 + 1.2 + 1.2.3 + ...+1.2.3...N

Input

Dữ liệu vào chỉ có 1 dòng ghi số N không quá 20. 


Output

Kết quả ghi trên một dòng. 

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

Bài làm tốt nhất

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

Bài làm tốt 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

Dữ liệu vào chỉ có 2 số nguyên dương a và b không quá 9 chữ số.

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

Bài làm tốt nhấ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

Nếu đúng in ra YES, nếu sai in ra NO.

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");
}}

BẮT ĐẦU VÀ KẾT THÚC

Bài làm tốt nhất

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");
}

TỔNG CHỮ SỐ CHIA HẾT CHO 10

Bài làm tốt nhất

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Ố

Bài làm tốt nhấ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

Kết quả in ra YES nếu đó là số nguyên tố, in ra NO nếu ngược lại.

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");
}
}
}

SỐ NGUYÊN TỐ NHỎ HƠN N

Bài làm tốt nhất

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

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
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);
}
}

LIỆT KÊ N SỐ NGUYÊN TỐ ĐẦU TIÊN

Bài làm tốt nhất

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;
}
}
}

LIỆT KÊ CÁC CẶP SỐ NGUYÊN TỐ CÙNG NHAU

Bài làm tốt nhất

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

Chỉ có một dòng ghi hai số a,b

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)

PHÂN TÍCH THỪA SỐ NGUYÊN TỐ 1

Bài làm tốt nhất

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

Bài làm tốt nhất

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

Bài làm tốt nhất

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.

Viết chương trình kiểm tra 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");
}
}

VỪA NGUYÊN TỐ VỪA THUẬN NGHỊCH

Bài làm tốt nhất

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

Dòng đầu ghi số bộ test. Mỗi bộ test là một cặp số a,b.

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

20 1234 757 787 797 919 929

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");
}

 LIỆT KÊ SỐ CHÍNH PHƯƠNG

Bài làm tốt nhất

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

Bài làm tốt nhất

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);
}
}

HÌNH CHỮ NHẬT DẤU *

Bài làm tốt nhất

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

Bài làm tốt nhất

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:  

 Dòng đầu tiên đưa vào T là số lượng bộ test.


 T dòng tiếp theo mỗi dòng có một cặp số a, b.
 T, a, b thỏa mãn ràng buộc: 1≤T≤100; 1≤a, b≤10 ; 8

Output:

 Đưa ra kết quả mỗi test theo từng dòng.

       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

Bài làm tốt nhất

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

Bài làm tốt nhất

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

Bài làm tốt nhất

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

Bài làm tốt nhất

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.

Output: In ra kết quả kiểm tra.

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

Bài làm tốt nhất

Dãy số Fibonacci được định nghĩa theo công thức như sau:

F1 = 1

F2 = 1

Fn = Fn-1 + Fn-2 với n>2

Viết chương trình tính số Fibonacci thứ n (với n không quá 92)

Input: Dòng đầu ghi số bộ test. Mỗi bộ test là một số nguyên n.

Output: Với mỗi bộ test, ghi ra số Fibonacci thứ n trên một dòng.

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

Bài làm tốt 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.

Output: Với mỗi bộ test ghi trên hai dòng :

 Dòng thứ nhất là giá trị số lớn nhất


 Dòng thứ 2 lần lượt là các vị trí trong dãy có giá trị lớn nhất (chỉ số tính từ 0).

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

Bài làm tốt nhất

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");
}

You might also like