Tin tức thư viện

Chức năng Dừng xem quảng cáo trên violet.vn

12087057 Kính chào các thầy, cô! Hiện tại, kinh phí duy trì hệ thống dựa chủ yếu vào việc đặt quảng cáo trên hệ thống. Tuy nhiên, đôi khi có gây một số trở ngại đối với thầy, cô khi truy cập. Vì vậy, để thuận tiện trong việc sử dụng thư viện hệ thống đã cung cấp chức năng...
Xem tiếp

Hỗ trợ kĩ thuật

  • (024) 62 930 536
  • 091 912 4899
  • hotro@violet.vn

Liên hệ quảng cáo

  • (024) 66 745 632
  • 096 181 2005
  • contact@bachkim.vn

BAI TAP C++

Wait
  • Begin_button
  • Prev_button
  • Play_button
  • Stop_button
  • Next_button
  • End_button
  • 0 / 0
  • Loading_status
Nhấn vào đây để tải về
Báo tài liệu có sai sót
Nhắn tin cho tác giả
(Tài liệu chưa được thẩm định)
Nguồn:
Người gửi: lê anh tuấn
Ngày gửi: 23h:07' 03-10-2023
Dung lượng: 310.1 KB
Số lượt tải: 95
Số lượt thích: 0 người
1

Copy vào codeblocks, nhập vào bàn phím và xuất ra màn hình
Bài làm của mình còn nhiều thiếu sót và nhiều bài chưa phải là cách
tối ưu. 100 bài về sau tốt hơn 100 bài đầu.
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
freopen("bai99.inp","r", stdin);
freopen("bai99.out","w", stdout);
Dùng hàm s.upper() để chuyển đổi xâu s sang in hoa và hàm s.lower() để chuyển
đồi xâu sang in thường
Dùng hàm transform() để chuyển đồi tất cả các ký tự.
- transform(s1.begin(), s1.end(),s1.begin(), ::toupper); chuyển tất cả các ký tự
trong xâu s1 thành chữhoa
. - transform(s2.begin(), s2.end(),s2.begin(), ::tolower); chuyển tất cả các ký tự
trong xâu s2 thành chữ thường
Dùng hàm tìm kiếm s.find(s1) để xác định vị trí xuất hiện xâu s1 trong xâu s: vt =
s.find(s1) Nếu vt != -1 tức là có xâu s1 trong xâu s thì thay thế xâu s1 bởi xâu s2
bằng hàm s.replace(vt,l1,s2); hoặc thay thế bằng lệnh xóa và chèn: s.erase(vt,l1);
s.insert(vt,s2)
sort(a, a + n, greater());
BÀI 1: Cho ba số nguyên a, b, c. Hãy tìm số lớn nhất trong ba số trên.
BÀI LÀM
#include
using namespace std;
int a, b, c;
int main(){
cin>>a>>b>>c;
int kq=max(a,b);
kq=max(kq,c);
cout << "dap an:" << kq;
return 0;
}
Cách 2:
#include
using namespace std;
int a, b, c;
int main(){
cin>>a>>b>>c;
if(a==b&&b==c){
cout<<"khong co gia tri max"<} else {
int maxx=a;
if( b>maxx){

2

}

maxx=b;}
if(c> maxx){
maxx=c;}
cout << "gia tri max:"<< maxx<return 0;

}
BÀI 2: Tìm số nguyên dương nhỏ nhất sao cho 1+2+3+4+...+n >10000
BÀI LÀM
#include
using namespace std;
int sum=0;
int main(){
for(int i=1;i<=1000;i++)
{ sum+=i;
if(sum>10000)
{cout<return 0;
}
}
}
BÀI 3: Tìm ước chung lớn nhất của hai số a và b.
BÀI LÀM
#include
using namespace std;
int a, b;
long long gcd(long long a,long long b){
if(b==0) return a;
return gcd(b,a%b);
}
int main(){
cin>>a>>b;
cout<return 0;
}
BÀI 4: Tìm ước chung lớn nhất và bội chung nhỏ nhất của hai số nguyên dương a
và b.
BÀI LÀM
#include
using namespace std;
int gcd(int a, int b){
if(b==0) return a;
return gcd(b,a%b);
}
int a, b;

3
int tich;
int main(){
cin>>a>>b;
tich=a*b;
cout <<"UCLN = " << gcd(a,b)<cout<<"BCNN = "<return 0;
}
BÀI 5. Cho số tự nhiên n. Tìm số nguyên nhỏ nhất chia hết cho 1,2,3,4...,n.
Input: - dòng dầu tiên đưa vào T là số lượng bộ test.
- T dòng tiếp theo mỗi dòng đưa vào một bộ test. Mỗi bộ test là một số tự
nhiên n.
- T thỏa mãn ràng buộc: 1<=T<=104
- Đưa kết quả mỗi test theo từng dòng.
Input
Output
2
6
3
60
5
BÀI LÀM
Cachs 1.
#include
using namespace std;
int test;
int gcd(int a, int b){
if(b==0) return a;
return gcd(b,a%b);
}
long long bsc(int a,int b){
long long tich=a*b;
if(b==0) return a;
return tich/gcd(a,b);
}
int main(){
cin>>test;
while(test--){
int n;
cin>>n;
long long kq=1;
for(int i=1;i<=n;i++){
kq=bsc(kq,i);
}
cout<}
return 0;
}

4
Cach 2
#include
using namespace std;
int test;
long long bsc(int a,int b)
{ long long tich=a*b;
while(a*b!=0)
{
if(a>b)a%=b;
else b%=a;
}
return tich/(a+b);
}
int main(){
cin>>test;
while(test--){
int n;
cin>>n;
long long kq=1;
for(int i=1;i<=n;i++){
kq=bsc(kq,i);
}
cout<}
return 0;
}
BÀI 6. Cho số nguyên dương n. Tìm n số nguyên tố đầu tiên.
Input
Output
5
2 3 5 7 11
BÀI LÀM
#include
using namespace std;
bool check(int n){
if(n<2) return false;
for(int i=2;i<=sqrt(n);i++){
if(n%i==0)return false;
}
return true;
}
int main(){
int n;
cin>>n;
int dem=0, i=2;
while(dem
5
if(check(i)==true){
cout<dem++;
}
i++;

}
return 0;

}
Cach 2.
#include
using namespace std;
bool check(int n){
if(n<2) return false;
for(int i=2;i<=sqrt(n);i++){
if(n%i==0)return false;
}
return true;
}
int main(){
int n;
cin>>n;
int dem=0;
for(int i=2; ;i++){
if(check(i)==true){
cout<dem++;
}
if(dem==n) break;
}
return 0;
}
BÀI 7. Cho bốn số nguyên dương X, Y, Z và N. Hãy tìm số nguyên dương nhỏ
nhất có N chữ số chia hết cho đồng thời X, Y, Z.
Input:
- Dòng đầu tiên đưa vào số lượng test T(T<=100).
- Những dòng kế tiếp đưa vào T bộ test. Mỗi bộ test là bộ bốn số X, Y, Z, N. Các
số 1<=X,Y,Z<=10 5 ; N<=18.
Input
Output
3
1020
2354
120
4563
-1
3572
BÀI LÀM
#include

6
using namespace std;
long long bscnn(long long a, long long b)
{ long long tich=a*b;
while(a*b!=0)
{if(a>b) a%=b;
else b%=a;
}
return tich/(a+b);
}
int main(){
int test; cin>>test;
while(test--)
{
long long x,y,z,n;
cin>>x>>y>>z>>n;
long long res=bscnn(x,y);
res=bscnn(res,z);
long long so_nho_nhat=pow(10,n-1);
if(so_nho_nhatelse if(so_nho_nhat%res==0)cout<else {
cout<<(so_nho_nhat/res+1)*res;
}
}
cout<return 0;
}
BÀI 8. Cho hai số a và b trong đó a<=10 12 , b<=10 250 . Tìm ước chung lớn nhất
của hai số a và b.
Input:
- Dòng đầu tiên đưa vào T là số lượng bộ test.
- T dòng tiếp theo đưa các bộ test. Mỗi bộ test gồm hai dòng: dòng đầu tiên đưa
vào số a, dòng tiếp theo đưa vào số b.
- các số T, a, b thỏa mãn ràng buộc: 1<=T<=100; 1<=a<=10 12 ; 1<=b<=10 250
Output:
-Đưa ra kết quả mỗi test theo từng dòng.
Input
Output
1
3
1221
1234567891011121314151617181920212223242526272829
BÀI LÀM
#include
using namespace std;

7
long long gcd(long long a,long long b){
if(b==0) return a;
return gcd(b,a%b);
}
int main(){
int test; cin>>test;
while(test--){
long long a;
cin>>a;
cin.ignore();
string b;
cin>>b;
long long tem=0;
for( int i=0; i{
tem*=10;
tem+=(b[i]-48);
tem%=a;
}
cout << gcd(tem,a);
}
cout<return 0;
}
Cachs 2
#include
using namespace std;
long long gcd(long long a,long long b){
if(b==0) return a;
return gcd(b,a%b);
}
int main(){
long long a;
cin>>a;
string b;
cin>>b;
long long tem=0;
for( int i=0; item*=10;
tem+=(b[i]-48);
tem%=a;
//cout<
8
}
cout << gcd(tem,a);
return 0;

}
BÀI 9. Nhập vào một số nguyên dương n. Hãy liệt kê các ước của n.
BÀI LÀM
#include
using namespace std;
int n;
int main(){
cin>>n;
for(int i=1;i<=n;i++)
{
if(n%i==0) cout<}
return 0;
}
BÀI 10. Nhập vào một số nguyên dương n. Hãy liệt kê các ước số lẻ của n.
BÀI LÀM
#include
using namespace std;
int n;
int main(){
cin>>n;
for(int i=1;i<=n;i++)
{
if(n%i==0&&i%2==1) cout<}
return 0;
}
BÀI 11. Nhập vào một số nguyên dương n. Hãy liệt kê các ước số nguyên tố của n.
BÀI LÀM
#include
using namespace std;
int main(){
int n;
cin >>n;
for(int i=2;i<=n;i++)
{ while(n%i==0)
{cout<n=n/i;
}

9
}
return 0;

}
BÀI 12. Cho số nguyên dương n. Hãy liệt kê các số nguyên tố trong khoảng từ 1
đến n.
BÀI LÀM
#include
using namespace std;
bool check(int n)
{
if(n<2)return false;
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0) return false;
}
return true;
}
int main(){
int n;
cin >>n;
for(int i=2;i<=n;i++)
if(check(i)==true)
cout <return 0;
}
BÀI 13. Cho số nguyên dương n. Hãy liệt kê các số chính phương trong khoảng từ
1 đến n.
BÀI LÀM
#include
using namespace std;
bool check(int n)
{
int scp=sqrt(n);
if(scp*scp==n) return true;
return false;
}
int main(){
int n;
cin >>n;
for(int i=1;i<=n;i++)
if(check(i)==true)
cout <return 0;
}
BÀI 14. Tính tổng các phần tử lẻ của mảng.

#include

10
BÀI LÀM

using namespace std;
int sum =0;
int main(){
int n;
cin>>n;
int a[n];
for(int i=0;icin>>a[i];
for(int i=0;i{
if(a[i]%2==1) sum+=a[i];
}
cout << "ket qua la " << sum;
return 0;
}
BÀI 15. Liệt kê các số nguyên tố của mảng n phần tử.
BÀI LÀM
#include
using namespace std;
bool check (int n)
{ if(n<2) return false;
for(int i=2;i<=sqrt(n);i++) if (n%i==0) return false;
return true;
}
int main(){
int n;
cin>>n;
int a[n];
for(int i=0;icin>>a[i];
for(int i=0;i{
if(check(a[i])==true) cout<}
return 0;
}
BÀI 16. Sắp xếp các số của mảng theo thứ tự tăng dần.
BÀI LÀM
#include
using namespace std;

11
int main(){
int n;
cin>>n;
int a[n];
for(int i=0;icin>>a[i];
sort(a,a+n);
for(int i=0;ireturn 0;
}
Cach 2
#include
using namespace std;
int main(){
int n;
cin>>n;
int a[n];
for(int i=0;icin>>a[i];
for(int i=0;i{ for(int j=i+1;jif(a[i]>a[j]) swap(a[i],a[j]);
}
for(int i=0;icout<return 0;
}
BÀI 18. Liệt kê phần tử khác nhau xuất hiện trong mảng.
Ví dụ: n=5 1 2 5 6 2.
Xuất: 1 2 5 6
LÀM LÀM
#include
using namespace std;
int check[10000];
int main(){
int n; cin>>n;
int a[n];
for(int i=0;icin>>a[i];
for(int i=0;i<10000;i++)
check[i]=0;
for(int i=0;i
12
check[a[i]]=1;
for(int i=0;i<10000;i++)
if(check[i]==1)
cout << i <<" ";
return 0;

}
Cách 2. Dùng mảng đánh dấu. Tất cả các phần tử trong mảng bằng 0
#include
using namespace std;
int check[10000]={0};
int main(){
int n; cin>>n;
int a[n];
for(int i=0;icin>>a[i];
for(int i=0;iif(check[a[i]]==0){
cout<if(check[a[i]]=1);
}
}
}
BÀI 19. Tính tổng hai số nguyên lớn.( mà không tính được bằng int, loong loong,
doudle).
BÀI LÀM
#include
using namespace std;
void tong(string a, string b)
{
string kq="";
while(a.size()while(a.size()>b.size()) b="0"+b;
int du=0;
for(int i= a.size()-1;i>=0;i--)
{
int k=(a[i]-'0')+(b[i]-'0');
if(k+du>=10){
kq+=('0'+k+du-10);
du=1;
}
else {
kq+=('0'+k+du);
du=0;

13
}

}
if(du==1) kq+='1';
for(int i=kq.size()-1;i>=0;i--) cout<
}
int main(){
string a, b;
cin>>a>>b;
tong(a,b);
return 0;
}
BÀI 20. Liệt kê các số chính phương của một mảng.
BÀI LÀM
#include
using namespace std;
bool scp(int n)
{
int m=sqrt(n);
if(m*m==n)return true;
return false;
}
int main(){
int n; cin>>n;
int a[n];
for(int i=0;icin>>a[i];
for(int i=0;iif(scp(a[i])==true)
cout<return 0;
}
Bài 21. Người ta gọi cấp số cộng với công sai là m. Hãy kiểm tra xem trong mảng
có bao nhiêu số lập nên cấp số cộng với công sai m.
Input
Output
9
2 3 4 6 8 9 10 11 12
3
2
Giải thích: Cấp số cộng là: 4 6 8 (gồm 3 số với công sai m = 2)
BÀI LÀM
#include
using namespace std;
int a[100002];
int n, dem, res;
int m;

14
int main(){
cin>>n;
for(int i=0;icin>> a[i];
cin>>m;
res = 0; dem = 0;
for(int i = 0; iif(a[i+1]-a[i]==m)
dem++;
else dem = 0;
if (res < dem) res = dem;
}
if (res == 0) cout << 0;
else cout << res+1;
return 0;
}
BÀI 22. Cho số nguyên dương n. Kiểm tra xem trong khoảng từ 1 đến n có bao
nhiêu số có 3 ước nguyên dương .( Số đó là bình phương của một số nguyên tố).
BÀI LÀM
#include
using namespace std;
bool check(int n)
{
if(n<2)return false;
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0) return false;
}
return true;
}
int main(){
int n;
cin >>n;
int dem =0;
for(int i=2;i<=sqrt(n);i++)
if(check(i)==true) dem++;
cout <return 0;
}
BÀI 23. Cho số nguyên dương n. Liệt kê xem trong khoảng từ 1 đến n có bao
nhiêu số có 3 ước nguyên dương .( Số đó là bình phương của một số nguyên tố).
BÀI LÀM
#include
using namespace std;
bool check(int n)

15
{

if(n<2)return false;
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0) return false;
}
return true;

}
int main(){
int n;
cin >>n;
for(int i=2;i<=sqrt(n);i++)
if(check(i)==true)
cout <return 0;
}
BÀI 24. Kiểm tra xem ba độ dài có phải là độ dài ba cạnh của tam giác không? Đó
là tam giác gì?
BÀI LÀM
#include
using namespace std;
int main(){
double a, b, c;
cin>>a>>b>>c;
if(a+b>c&&b+c>a&&a+c>b){
if(a==b&&a==c) cout<<"tam giac la tam giac deu";
else if(a==b||a==c||b==c) cout<<"tam giac la tam giac can";
else if(a*a+b*b==c*c||a*a+c*c==b*b||c*c+b*b==a*a) cout<<"la tam
giac vuong";
else cout<<"la tam giac thuong";
}
else cout <<"day khong phai la do dai cua tam giac";
return 0;
}
BÀI 25. Chuyển số nhị phân thành số thập phân.
BÀI LÀM
#include
using namespace std;
int main(){
string n;
cin>>n;
int sum=0;
int chay =0;

16
for(int i=n.size()-1;i>=0;i--)
{
if(n[i]=='1') sum+=pow(2,chay);
chay++;
}
cout << "ket qua " << sum;
return 0;

}
BÀI 26. Chuyển số thập phân thành số nhị phân.
BÀI LÀM
#include
using namespace std;
int main(){
int n;
cin>>n;
int x[100];
int chay=0;
while(n!=0)
{
x[chay]=n%2;
chay++;
n=n/2;
}
for(int i=chay-1;i>=0;i--)
cout <return 0;
}
BÀI 27 . Cho mảng gồm n phần tử. Hãy tìm phần tử có tổng các chữ số lớn nhất là
bao nhiêu, đưa ra vị trí phần tử đó trong mảng.(n<10000)
Input
Output
9
23 55 28 999 12 45 26 18 54
27 4
BÀI LÀM
#include
using namespace std;
int a[10002];
int cs, n;
int main(){
cin>>n;
for(int i=0;icin>>a[i];

17
int tongmax =0;
int vt =0;
for(int i=0;iint tong=0;
int so=0;
while(a[i]>0){
cs=a[i]%10;
tong=tong +cs;
a[i]=a[i]/10;
if(tongmax< tong){
tongmax=tong;
vt=i+1;
}
}
}
cout << tongmax << " "<return 0;

}
BÀI 28 . (Hai mảng bằng nhau). Cho mảng gồm các phần tử. Hãy tìm phần tử có
tổng các chữ số là lớn nhất, đưa ra vị trí phần tử đó trong mảng. (đưa ra phần tử
lớn nhất đầu tiên trong dãy).
Input
Output
9
23 55 28 999 12 45 26 18 54
999 4
BÀI LÀM
#include
using namespace std;
int a[10002], y[10002];
int cs, n, tongmax=0,ptmax=0,vt=0;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
y[i]=a[i];
}
for(int i=1;i<=n;i++){
int tong=0;
while(a[i]>0){
cs=a[i]%10;
tong=tong +cs;
a[i]=a[i]/10;
if(tongmax< tong){
tongmax=tong;

18
}
}
}

ptmax=y[i];
vt=i;

cout << ptmax << " "<return 0;

}
BÀI 29. Cho một mảng gồm n phần tử. Đếm xem trong mảng có bao nhiêu số chia
hết cho 3.
BÀI LÀM
#include
using namespace std;
int n, res = 0;
string st;
int s;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
//freopen("BAI2.INP","r", stdin);
//freopen("BAI2.OUT","w", stdout);
cin >> n;
for(int i = 1; i<= n; i++){
cin >> st;
s = 0;
for (int j =0; j< st.size(); j++)
s = s+ st[j] - 48;
if (s%3==0) res ++;
}
cout << res;
return 0;
}
BÀI 30. Hãy liệt kê tất cả các số nguyên tố trong khoảng [m, n]. Ví dụ m= 1,
n=10 ta có kết quả là 2,3,5,7.
Input:
- Dòng đầu tiên đưa vào số lượng test T
- Những dòng kế tiếp mỗi dòng đưa vào một bộ test. Mỗi bộ test là bộ m,
n được viết cách nhau một vài khoảng trống.
- T, m, n thỏa mãn ràng buộc: 1<=T<=100; 1<=m<=n<=10000; nm<=10000.
Input
2
1 10
3 5

Output
2357
35

19
BÀI LÀM

Cách 1:
#include
using namespace std;
bool check(int n)
{
if(n<2)return false;
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0) return false;
}
return true;
}
int main(){
int test; cin>>test;
while(test--){
int m,n;
cin>>m>>n;
for(int i=m;i<=n;i++)
if(check(i)==true) cout <}
cout<return 0;
}
Cách 2. Sàng số nguyên tố.
#include
using namespace std;
int main(){
int test; cin>>test;
while(test--){
int m,n;
cin>>m>>n;
int a[10001]={0};
a[0]=1;
a[1]=1;
for(int i=2;i<=n;i++)
{
if(a[i]==0)
{
for(int j=i*i;j<=n;j+=i)
{
a[j]=1;
}
}
}

20

}

for(int i=m;i<=n;i++)
{
if(a[i]==0) cout<}
cout<}
return 0;
n −1

Bai 31. Cho mảng gồm n phần tử. Tìm tổng ∑ Ai∗i để có giá trị lớn nhất (bằng
i=0

cách sắp đặt lại các phần tử trong mảng). Chú ý kết quả có thể là rất lớn hãy đưa ra
kết quả lấy modulo với 10 9 +7
Input: - dòng đầu tiên đưa vào số lượng bộ test T.
-Những dòng kế tiếp đưa vào các bộ test. Mỗi bộ test gồm 2 dòng: dòng thứ nhất
đưa vào số phần tử của mảng N; dòng kế tiếp đưa vào N số Ai tương ứng với các
phần tử của mảng; các số được viết cách nhau một vài khoảng trống.
- Thỏa mãn 1<=T<=100; 1<=N, A[i]<=10 7 .
Output : đưa ra kết quả mỗi test theo từng dòng.
Ví dụ:
Input
Output
2
40
5
8
53241
3
132
Giải thích: Sắp sếp mảng theo thứ tự tăng dần: 1 2 3 4 5 rồi tính tổng:
0.1+1.2+2.3+3.4+4.5 =40
BÀI LÀM
#include
using namespace std;
long module=10e9+7;
void result()
{
long n, a[n+1];
cin >>n;
for( long i=0;i>a[i];
sort(a,a+n);
long sum=0;
for(long i=0;isum+=a[i]*i;
sum=sum%module;
}
cout<}

21
int main(){
int test;
cin>>test;
while(test--)
{
result();
}
return 0;

}
BÀI 32. Số hoàn thiện là số mà tổng các ước của nó bằng chính nó. Hãy đếm và in
ra các số hoàn thiện của mảng một chiều.
Input
Output
6
2
1 3 4 6 9 28
6 28
BÀI LÀM
#include
using namespace std;
bool hoan_thien (int n)
{ int s=0;
for(int i=1;i<=n-1;i++)
{ if (n%i==0)
s=s+i;
}
if (s==n) return true;
else
return false;
}
int main()
{ ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
//freopen("BAI604.INP","r", stdin);
//freopen("BAI604.OUT","w", stdout);
int a[1000], i, n, dem=0;
cin>>n;
for(i=0;icin>>a[i];
for (i=0;iif(hoan_thien(a[i])==true)
dem++;
cout<<"co "<for (i=0;iif(hoan_thien(a[i])==true)
cout<cout<
22
return 0;

}
BÀI 33. Dãy Số Fibonaci được định nghĩa như sau: s 0 = s 1 =1; s n = s n-1 +s n-2 vơi
n>=2. Cho số nguyên dương n.(n<=93). Tính số s n ?
Input
Output
8
34
BÀI LÀM
#include
using namespace std;
int F(int n){
if(n==0||n==1) return 1;
else return F(n-1)+F(n-2);
}
int main(){
int n;
cin>>n;
cout << F(n)<< endl;
return 0;
}
BÀI 34. Cho số n hãy in ra n số fibonacy đầu tiên.
Input
Output
8
1 1 2 3
BÀI LÀM
#include
using namespace std;
long long fibonacy(long long n)
{ long long f1=1,f2=1,f, i=3;
if(n==1||n==2) return 1;
while (i<=n)
{f=f1+f2;
f1=f2;
f2=f;
i++;
}
return f;
}
int main(){
long long n;
cin>>n;
for(long long i=1;i<=n;i++)
cout << fibonacy(i) <<" ";
return 0;

5

8

13

21

34

34

23
}
BÀI 35. Cho số n hãy in ra những số fibonacy nhỏ hơn n.
BÀI LÀM
#include
using namespace std;
long long fibonacy(long long n)
{ long long f1=1,f2=1,f, i=3;
if(n==1||n==2) return 1;
while (i<=n)
{f=f1+f2;
f1=f2;
f2=f;
i++;
}
return f;
}
int main(){
long long n;
cin>>n;
long long i=1;
while (fibonacy(i)<=n)
{cout << fibonacy(i) <<" ";
i++;}
return 0;
}
BÀI 36. Nhập vào một số tự nhiên N. Hãy in ra số đảo ngược lại của số N.( bỏ số
0 trước nếu có).
BÀI LÀM
#include
using namespace std;
long long n;
long long res;
int a;
int main(){
cin>>n;
res=0;
while (n!=0) {
a=n%10;
res= res*10+a;
n=n/10;
}
cout<return 0;

24
}
BÀI 37. Nhập vào một mảng N số nguyên a1, a2, a3, ...., aN (1<=N<=10 5 ). Hãy
đếm số lượng số không âm của dãy số trên và tính tổng các số không âm đó.
BÀI LÀM
#include
const int N=100002;
using namespace std;
int a[N];
int n;
long long res=0;
long long s=0;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
//freopen("BAI603.INP","r", stdin);
//freopen("BAI603.OUT","w", stdout);
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
if(a[i]>=0) res++;
for(int i=1;i<=n;i++)
if(a[i]>=0) s=s+a[i];
cout << res << endl;
cout<return 0;
}
BÀI 38. Nhập vào một mảng N số nguyên a1, a2, a3, ...., aN (1<=N<=10 5 ). Hãy
đếm số lượng số chẵn của dãy số trên và đếm số lượng số lẻ của dãy số trên.
BÀI LÀM
#include
const int N=100002;
using namespace std;
int a[N];
int n;
long long res=0;
long long s=0;
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
if(a[i]%2==0) res++;
for(int i=1;i<=n;i++)
if(a[i]%2==1) s++;

25
cout << res << endl;
cout<return 0;

}
BÀI 39. Nhập vào một mảng N số nguyên a1, a2, a3, ...., aN (1<=N<=10 5 ). Hãy
đưa ra số chẵn lớn nhất và số lẻ lớn nhất của dãy số trên.
BÀI LÀM
#include
const int N=100002;
using namespace std;
int a[N];
int n;
long long res=0;
long long s=0;
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
if(a[i]%2==0&resfor(int i=1;i<=n;i++)
if(a[i]%2==1&scout << res << endl;
cout<return 0;
}
BÀI 40. Cho số nguyên dương n và cho dãy số nguyên a1, a2, a3, ..., an. Một đoạn
con của dãy là một dãy các phần tử liên tiếp al,..., ar. Trong đó 1<=L<=R<=n. Hãy
tính xem trong dãy đã cho có bao nhiêu đoạn con có tổng các phần tử bằng 0.
- Dòng đầu chưa số nguyên dương n. 1<=n<=10 5
- Dòng thứ hai chưa n số nguyên a1, a2, a3, ..., an
Input
Output
4
2
3 4-7 3
#include
const int N = 1e5+3;
using namespace std;
int a[N];
long long f[N];
int n;
long long res = 0;
map< long long, int> mp;
int main(){

BÀI LÀM

26
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
//freopen("TONG.INP", "r", stdin);
//freopen("TONG.OUT", "w", stdout);
cin >> n;
for(int i = 1; i<= n; i++) cin >> a[i];
f[0]= 0;
for(int i = 1; i<= n; i++) f[i] = f[i-1]+a[i];
mp[0]++;
for(int i = 1; i<= n; i++){
res = res + mp[f[i]];
mp[f[i]]++;
}
cout << res;
return 0;

}
BÀI 41. Cho dãy số nguyên a1, a2, a3, ..., an. Hãy tìm tích nhỏ nhất của hai số
thuộc dãy số trên. ( nghĩa là tìm tích của a i *a j nhỏ nhất với i#j)
Dữ liệu:
- Dòng đầu tiên là số nguyên dương n. (2<=n <= 10 5 )
- Dòng thứ 2 là dãy số nguyên a1, a2, a3, ..., an. ( |a i| <=10 9 )
Input
Output
8
-18
1 3 5 -2 4 5 7 9
BÀI LÀM
#include
using namespace std;
const int N=100002;
int main(){
int n;
cin>>n;
long long a[n];
for(long long i=0;icin>>a[i];
for(long long i=0;i{ for(long long j=i+1;jif(a[i]>a[j]) swap(a[i],a[j]);
}
if(a[0]<0&a[n-1]>0)
cout<else if( a[0]<0&a[n-1]<0)
cout<else cout<return 0;

27
}
Cách 2. Sắp xếp theo sort()
#include
using namespace std;
const int N=100002;
int main(){
int n;
cin>>n;
long long a[n];
for(long long i=0;icin>>a[i];
sort(a, a+n);
if(a[0]<0&a[n-1]>0)
cout<else if( a[0]<0&a[n-1]<0)
cout<else cout<return 0;
}
BÀI 42: Cho hai số nguyên dương a, b thỏa mãn 2số nguyên tố cùng nhau trong khoảng (a,b).
Input
Output
35
34
35
45
BÀI LÀM
#include
using namespace std;
int ucln(int a, int b){
if(b==0)
return a;
return ucln(b, a%b);
}
int main(){
int a, b;
cin>>a>>b;
for(int i=a;ifor(int j=i+1;j<=b;j++){
if(ucln(i,j)==1){
cout<}
}
}

28
return 0;

}
BÀI 43. Kiểm tra xem hai số nguyên dương có phải là hai số nguyên tố cùng nhau
không.
BÀI LÀM
#include
using namespace std;
int a, b;
int ucln(int a,int b){
while(a*b!=0){
if(a>b)a=a%b;
else b=b%a;
}
return a+b;
}
int main(){
cin>>a>>b;
if (ucln(a,b)==1)
cout<<"la hai so nguyen to cung nhau";
else cout<<"khong phai la hai so nguyen to cung nhau";
return 0;
}
BÀI 44: Cho hai số nguyên dương a, b thỏa mãn 2số nguyên tố cùng nhau trong khoảng (a,b).
Input
Output
35
3,4
3,5
4,5
BÀI LÀM
#include
using namespace std;
int a, b;
int ucln(int a,int b){
while(a*b!=0){
if(a>b)a=a%b;
else b=b%a;
}
return a+b;
}
int main(){
cin>>a>>b;
for(int i=a;ifor(int j=i+1;j<=b;j++)
if (ucln(i,j)==1)
cout<
29
return 0;

}
BÀI 45. Cho số nguyên dương n. Hãy liệt kê các cặp số nguyên tố có tổng bằng n.
- Dòng đầu tiên vơi T bộ test
- Dòng thứ hai trở đi là T số tự nhiên n.
Input
Output
2
2
10
10
20
3,7
5,5
20
3,17
7,13
BÀI LÀM
#include
using namespace std;
bool check(int n)
{
if(n<2)return false;
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0) return false;
}
return true;
}
int main(){
int test; cin>>test;
while(test--){
int n;
cin>>n;
for(int i=1;i<=n/2;i++)
if(check(i)==true&&check(n-i)==true) cout <}
cout<return 0;
}
BÀI 46. Cho số nguyên dương n. Hãy liệt kê các số nguyên dương nhỏ hơn n và
nguyên tố cùng nhau với n.
Input
10
#include
using namespace std;
int a, b, n;

Output
1379
BÀI LÀM

30
int ucln(int a,int b){
while(a*b!=0){
if(a>b)a=a%b;
else b=b%a;
}
return a+b;
}
int main(){
cin>>n;
for(int i=1;iif (ucln(i,n)==1)
cout<return 0;
}
BÀI 46. Cho số nguyên dương n. Hãy đếm các số nguyên dương nhỏ hơn n và
nguyên tố cùng nhau với n.
Input
10

Output
4
BÀI LÀM

#include
using namespace std;
int a, b, n;
int dem=0;
int ucln(int a,int b){
while(a*b!=0){
if(a>b)a=a%b;
else b=b%a;
}
return a+b;
}
int main(){
cin>>n;
for(int i=1;iif (ucln(i,n)==1) dem++;
cout<return 0;
}
Bài 47. Hai số gọi là số đẹp nếu chúng đều là số nguyên tố và hơn kém nhau k đơn
vị. Cho số nguyên dương n. Hãy liệt kê các cặp số đẹp từ 1 đến n. ( k<=n)
Input
Output
20 4
3,7
7,11
13,17
Ví dụ: n = 20 , k = 4

31
BÀI LÀM

#include
using namespace std;
bool check(int n)
{
if(n<2)return false;
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0) return false;
}
return true;
}
int main(){
int n, k;
cin>>n;
cin>>k;
for(int i=1;i<=n;i++)
if(check(i)==true&&check(i+k)==true&&i+k<=n) cout
<return 0;

}
Bài 48. Hai số gọi là số đẹp nếu chúng đều là số nguyên tố và hơn kém nhau k đơn
vị. Cho số nguyên dương n. Hãy đếm các cặp số đẹp từ 1 đến n.
Input
Output
20 4
3
Ví dụ: n = 20 , k = 4
BÀI LÀM
#include
using namespace std;
bool check(int n)
{
if(n<2)return false;
for(int i=2;i<=sqrt(n);i++)
{
if(n%i==0) return false;
}
return true;
}
int main(){
int n, k, dem=0;
cin>>n;
cin>>k;
for(int i=1;i<=n;i++)
if(check(i)==true&&check(i+k)==true&&i+k<=n) dem++;

32
cout <return 0;

}
BÀI 49. Các học viên nhí của Anh ngữ ABC Smart hôm nay lại được học về
nguyên âm và phụ âm. Theo quy ước, người ta có các nguyên âm là a, i, u, e, o;
các chữ cái còn lại đều là phụ âm. Được biết sắp tới Phòng Giáo Dục Thành Phố
Thanh Hoá sẽ tổ chức một kỳ thi lập trình để khảo sát các đội tuyển của các trường
Trung Học Cơ Sở trong địa bàn. Các bạn học viên nhí nghĩ ngay ra một bài toán để
đố các bạn như sau: Cho một xâu ST gồm các chữ cái Latinh in thường (từ 'a' đến
'z') và các chữ số (từ '0' đến '9'); Theo quy ước thì các chữ số không phải là
nguyên âm và cũng không phải là phụ âm. Hãy đếm số lượng kí tự là phụ âm của
xâu ST trên.
Dữ liệu: Vào từ file văn bản BAI1.INP gồm:
+ Dòng đầu tiên số nguyên dương n là độ dài của xâu ST (n <= 105);
+ Dòng thứ 2 là xâu ST.
Kết quả: Ghi ra file văn bản BAI1.OUT là kết quả của đề bài
BAI1.INP
BAI1.OUT
14
10
anhnguabcsmar
t
BÀI LÀM
#include
using namespace std;
string st;
int n;
int res = 0;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
freopen("BAI1.INP","r", stdin);
freopen("BAI1.OUT","w", stdout);
cin >> n;
cin >> st;
for(int i =0; iif (st[i]>'9')
if (st[i]!='a'&&st[i]!='i'&&st[i]!='u'&&st[i]!='e'&&st[i]!='o'){
res++;
}
cout << res;
return 0;
}
BÀI 50. Nhập vào một sâu không chứa dấu cách gồm các số và các chữ cái in
thường hãy đếm xem sâu có bao nhiêu nguyên âm.
BÀI LÀM

33
#include
using namespace std;
string st;
int n;
int res = 0;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
//freopen("BAI1.INP","r", stdin);
//freopen("BAI1.OUT","w", stdout);
cin >> n;
cin >> st;
for(int i =0; iif (st[i]=='a'||st[i]=='i'||st[i]=='u'||st[i]=='e'||st[i]=='o')
res++;
}
cout << res;
return 0;
}
BÀI 51. Nhập vào một xâu st gồm các từ, giữa các từ được cách nhau bởi 1 dấu
cách hay nhiều dấu cách. Hãy đếm xem xâu đó có bao nhiêu từ.
BÀI LÀM
#include
using namespace std;
string st;
int n;
int res = 0;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
//freopen("BAI1.INP","r", stdin);
//freopen("BAI1.OUT","w", stdout);
getline(cin,st);
n= st.size();
st=st+' ';
for(int i =0; iif (st[i]!=' '&&st[i+1]==' ')
res++;
}
cout << res;
return 0;
}
Bài 52: XAUDEP
Hôm nay các học viên của Anh ngữ ABC Smart lại được học về nguyên âm và phụ
âm. Các chữ cái là nguyên âm gồm: 'a', 'e', 'i', 'o', 'u'; Còn các chữ các khác đều

34
là phụ âm. Long là một học viên rất thích lập trình, nên anh liền nghĩ ra 1 bài toán
để đố các bạn THCS như sau: Một xâu đẹp là xâu phải chứa các chữ cái nguyên
âm, chữ cái phụ âm hoặc chữ số xen kẽ nhau. Xâu có độ dài là 1 thì luôn coi là xâu
đẹp. Ví dụ: các xâu là xâu đẹp như: “a7bab9a”, “b8e6u”, “8a”, “b8”, “ab”, “a8”…;
các xâu không phải là xâu đẹp: “aa8b”, “a8bau”, “a44”…
Yêu cầu: Cho n xâu, các bạn hãy đếm xem có bao nhiêu xâu đẹp.
Dữ liệu: Vào từ file XAUDEP.INP gồm:
+ Dòng đầu tiên là số nguyên dương n (n <= 104);
+ n dòng tiếp theo, mỗi dòng là một xâu (1 <= độ dài của xâu <= 100)
Kết quả: Ghi ra file XAUDEP.OUT là số lượng xâu đẹp.
Ví dụ:
XAUDEP.INP
XAUDEP.OUT
2
1
a7bab9a
a44
Ràng buộc:
+ Có 50% số điểm tương ứng với n = 1;
+ Có 50% số điểm còn lại không có ràng buộc gì thêm.
BAI LAM
#include
using namespace std;
int n;
string st;
int dem =0;
int l;
int a[108];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>st;
l=st.size();
for(int j=0;jif(st[j]>='0'&&st[j]<='9')
a[j]=1;
else if(st[j]=='a'||st[j]=='e'||st[j]=='i'||st[j]=='u'||st[j]=='o')
a[j]=2;
else a[j]=3;
bool kt=true;
for(int j=0;jif(a[j]==a[j+1])
kt=false;
break;
}
if(kt==true)dem++;

35
}
cout << dem;
return 0;

}
BAI 53
Cho dãy số nguyên A gồm n phần tử a1, a2, ..., an. Hãy đểm số cặp chỉ số i, j thỏa 
mãn
a1 + a2+ …+ai = aj + aj+1+ …+an Với 1 ≤ i < j ≤ n.
Dữ liệu: Vào từ file ESEQ.INP gồm:
+ Dòng đầu ghi số nguyên dương n (2 ≤ n ≤ 105)
+ Dòng tiếp theo ghi  n số nguyên  a1,  a2,  ...,  an ( |
ai| <= 109 ) các số cách nhau bởi dấu cách
Kết quả: Ghi ra file văn bản ESEQ.OUT một số duy nhất là số cặp tìm được
Ví dụ:
ESEQ.INP

3
101

ESEQ.OUT
3

Ràng buộc:
+ Có 40% số điểm tương ứng với n <= 500;
+ Có 20% số điểm tương ứng với n <= 104;
+ Có 40% số điểm còn lại không có ràng buộc gì thêm.
BAI
#include
using namespace std;
long long n,a[100005],dem =0;
long long sl, sr;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
//freopen("BAI3.INP","r",stdin);
//freopen("BAI3.OUT","w",stdout);
cin>>n;
for (int i= 1; i<= n; i++)
cin>>a[i];
for (int i=1; i< n; i++)
for (int j= i+1; j<= n; j++){
sl = sr = 0;
for(int k = 1; k<= i; k++) sl = sl+a[k];
for(int k = j; k<= n; k++) sr = sr+a[k];
if (sr == sl) dem++;
}
cout<
36
}
Bai lam
#include
const int maxn=1e5+6;
using namespace std;
int n;
int a[maxn];
long long dem=0;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
//freopen("BAI1.INP","r",...
 
Gửi ý kiến