ĐỀ SỐ 2
Bài 1: (6,0đ) Viết chương trình nhập số tự nhiên n (n > 2). In ra màn hình:
- + Số chữ số của n; + Tổng các chữ số của n;
- + Tổng các số nguyên tố nhỏ hơn n; + Số nguyên tố (khác n) gần n nhất.
Ví dụ: Với n = 24, thì in kết quả:
+ 24 co 2 chu so
+ Tong cac chu so cua 24 la: 6
+ Tong cac so nguyen to nho hon 24 la: 100
+ So nguyen to gan 24 nhat la: 23
Bài 2: (6,0đ) Số bậc thang là số tự nhiên có các chữ số đứng sau không nhỏ hơn chữ số đứng trước (ví dụ: 123; 233). Viết chương trình nhập 2 số tự nhiên a, b (10 < a ≤ b). In ra màn hình:
- + Ước chung lớn nhất của a và b
- + Phân số tối giản a/b.
- + Các số chính phương từ a đến b.
- + Số lượng các Số bậc thang từ a đến b.
+ Phan so toi gian la: 4/5
+ Cac so chinh phuong la: 36
+ Co 7 So bac thang
Bài 3: (4,0đ) Viết chương trình nhập một xâu kí tự S gồm các chữ cái in thường, chữ số và kí tự trống (dấu cách). In ra màn hình:
- + Tổng các chữ số có trong xâu S;
- + Xâu S1 sau khi xóa các kí tự số trong S;
- + Xâu S2 sau khi xóa các kí tự liên tiếp giống nhau trong S1 chỉ giữ lại 1 kí tự.
Ví dụ: Với S = 5trrraann thhhhiii45 ttthannh ta64mmm, thì in ra kết quả:
+ Tong cac chu so la: 24
+ S1 = trrraann thhhhiii ttthannh tammm
+ S2 = tran thi thanh tam
Bài 4: (4,0đ) Để dễ dàng theo dõi những người thuộc diện F1 (có tiếp xúc gần với F0), Ban chỉ đạo phòng chống dịch bệnh Covid-19 bố trí các phòng ở khu cách ly theo yêu cầu sau:
- Phân các F1 thành n nhóm nhỏ theo thời gian phát hiện, mỗi nhóm không quá 4 người;
- Bố trí các nhóm vào chung phòng, mỗi phòng không quá 4 người;
- Các F1 trong một nhóm nhỏ phải ở chung một phòng.
Viết chương trình nhập n số tự nhiên nhỏ hơn 5 tương ứng với số người F1 trong n nhóm nhỏ (1 < n < 104). In ra màn hình số phòng ít nhất cần sử dụng để cách ly theo các yêu cầu trên.
Ví dụ: Với n = 6 và nhập các số: 1 4 2 3 2 3
thì in kết quả: So phong it nhat la: 4
BÀI GIẢI ĐỀ SỐ 2
Bài 1: (6,0đ)
import math
n = int(input('n = '))
m = n
dem = 0
tong = 0
while m != 0:
dem = dem + 1
tong = tong + m % 10
m = m // 10
print(n, 'co', dem, 'chu so')
print('Tong cac chu so cua', n, 'la:', tong)
def sangnguyento(n, nguyento):
nguyento[0] = False
nguyento[1] = False
for k in range(2, int(math.sqrt(n)) + 1):
if nguyento[k] == True:
for i in range(k * k, n + 1, k):
nguyento[i] = False
a = []
tong = 0
nguyento = [True] * (n + 1)
sangnguyento(n, nguyento)
for i in range(2, n):
if nguyento[i] == True:
tong = tong + i
a.append(i)
print('Tong cac so nguyen to nho hon', n, 'la:', tong)
def nguyento(x):
if x <= 3: return x > 1
if (x % 2 == 0) or (x % 3 == 0): return False
for i in range(5, int(math.sqrt(x)) + 1, 6):
if (x % i == 0) or (x % (i + 2) == 0): return False
return True
m = n + 1
while nguyento(m) == False: m = m + 1
print('So nguyen to gan', n, 'nhat la:', end=' ')
if (n - a[len(a) - 1]) <= (m - n): print(a[len(a) - 1])
else: print(m)
Bài 1: (6,0đ)
#include <iostream>
#include <bits/stdc++.h>
#include <vector>
using namespace std;
void sangnguyento(long long int n, bool nguyento[])
{
nguyento[0] = false;
nguyento[1] = false;
for (int k = 2; k < sqrt(n) + 1; k++)
{
if (nguyento[k] == true)
{
for (int i = k*k; i < n + 1; i = i + k)
nguyento[i] = false;
}
}
}
bool ktsnt(long long int x)
{
if (x <= 1)
return false;
if (x == 2 || x == 3)
return true;
if (x % 2 == 0 || x % 3 == 0)
return false;
for (int i = 5; i <= sqrt(x); i = i + 6)
if (x % i == 0 || x % (i + 2) == 0)
return false;
return true;
}
int main()
{
int n, dem, i;
long long int m;
long long int tong;
cout << "n = "; cin >> n;
m = n;
dem = 0;
tong = 0;
while (m != 0)
{
dem = dem + 1;
tong = tong + m % 10;
m = m / 10;
}
cout << n << " co " << dem << " chu so" << endl;
cout << "Tong cac chu so cua " << n <<
" la: " << tong << endl;
vector <long long int> a;
tong = 0;
bool nguyento[n + 1];
memset(nguyento, true, sizeof(nguyento));
sangnguyento(n, nguyento);
for (i = 0; i < n; i++)
if (nguyento[i] == true)
{
tong = tong + i;
a.push_back(i);
}
}
cout << "Tong cac so nguyen to nho hon " <<
n << " la: " << tong << endl;
m = n + 1;
while (ktsnt(m) == false)
{
m = m + 1;
}
cout << "So nguyen to gan " << n << " nhat la: ";
if ((n - a[a.size() - 1]) <= (m - n))
cout << a[a.size() - 1];
else
cout << m;
return 0;
}
Bài 2: (6,0đ)
import math
a = int(input('a = '))
b = int(input('b = '))
def ucln(a, b):
if (a == 0): return b
return ucln(b % a, a)
print('UCLN la:', ucln(a, b))
tu = a // ucln(a, b)
mau = b // ucln(a, b)
print('Phan so toi gian la:', tu,'/',mau)
print('Cac so chinh phuong la:', end=' ')
L = a
R = b
K = math.ceil(math.sqrt(L))
so = K * K
K = (K * 2) + 1
while (so >= L and so <= R):
print(so, end=' ')
so = so + K
K = K + 2
print()
def ktsbt(n):
bacthang = 1
while n >= 10:
so = n % 10
n = n // 10
if so < (n % 10):
bacthang = 0
break
return bacthang
dem = 0
for i in range(a, b + 1):
if (i > 10) and (ktsbt(i) == 1):
dem = dem + 1
print('Co', dem, 'So bac thang')
Bài 2: (6,0đ)
#include <iostream> #include <bits/stdc++.h> #include <vector> using namespace std; int ucln(int a, int b) { if (a == 0) return b; return ucln(b % a, a); } int ktsbt(int n) { int bacthang, so; bacthang = 1; while (n >= 10) { so = n % 10; n = n / 10; if (so < (n % 10)) bacthang = 0; break; } return bacthang; } int main() { int a, b; cout << "a = "; cin >> a; cout << "b = "; cin >> b; cout << "UCLN la: " << ucln(a, b) << endl; int tu, mau; tu = a / ucln(a, b); mau = b / ucln(a, b); cout << "Phan so toi gian la: " << tu << "/" << mau << endl; cout << "Cac so chinh phuong la: "; int L, R, K, so, dem, i; L = a; R = b; K = ceil(sqrt(L)); so = K * K; K = (K * 2) + 1; while (so >= L && so <= R) { cout << so << " "; so = so + K; K = K + 2; } cout << endl; dem = 0;
for (i = a; i < b + 1; i++)
if (i > 10 && ktsbt(i) == 1)
dem = dem + 1;
cout << "Co " << dem << " So bac thang" << endl;
return 0;
}
Bài 3: (4,0đ)
S = str(input('S = '))
mangso = ['9','8','7','6','5','4','3','2','1','0']
tong = 0
for i in range(0, len(S)):
if S[i] in mangso:
tong = tong + int(S[i])
print("Tong cac chu so la:", tong)
S1 = ''
for i in range(0, len(S)):
if S[i] not in mangso:
S1 = S1 + S[i]
print('S1 =',S1)
S2 = ''
for i in range(0, len(S1)):
if len(S2) == 0:
S2 = S2 + S1[i]
k = S1[i]
if S1[i] == k:
continue
else:
S2 = S2 + S1[i]
k = S1[i]
print('S2 =',S2)
Bài 3: (4,0đ)
#include <iostream>
#include <bits/stdc++.h>
#include <vector>
using namespace std;
int main()
{
string S, S1, S2;
cout << "S = "; getline(cin, S);
long long int tong, i;
char k;
tong = 0;
for (char kt : S)
if (isdigit(kt))
tong = tong + kt - '0';
cout << "Tong cac chu so la: " << tong << endl;
S1 = "";
for (char kt : S)
if (kt < '0' || kt > '9')
S1 = S1 + kt;
cout << "S1 = " << S1 << endl;
S2 = "";
for (i = 0; i < S1.length(); i++)
{
if (S2.length() == 0)
{
S2 = S2 + S1[i];
k = S1[i];
}
if (S1[i] == k)
continue;
else
{
S2 = S2 + S1[i];
k = S1[i];
}
}
cout << "S2 = " << S2 << endl;
return 0;
}
Bài 4: (4,0đ)
n = int(input('n = '))
""" Nhap mang theo dung dinh dang: Cac phan tu tren cung 1
dong
ngay phia sau cau Nhap cac so: va giua moi phan tu
cach nhau 1 dau cach """
s = input('Nhap cac so: ')
s = s.split()
s = list(map(int, s))
soluong1 = 0
soluong2 = 0
soluong3 = 0
soluong4 = 0
for i in range(0, len(s)):
if s[i] == 4: soluong4 = soluong4 + 1
if s[i] == 3: soluong3 = soluong3 + 1
if s[i] == 2: soluong2 = soluong2 + 1
if s[i] == 1: soluong1 = soluong1 + 1
soluong = soluong4
soluong4 = 0
if soluong3 == soluong1:
soluong = soluong + soluong1
soluong3 = 0
soluong1 = 0
if soluong3 > soluong1:
soluong = soluong + soluong1
soluong3 = soluong3 - soluong1
soluong1 = 0
if soluong3 < soluong1: soluong = soluong + soluong3 soluong1 = soluong1 - soluong3 soluong3 = 0 soluong = soluong + soluong3 soluong3 = 0 k = soluong1 // 4 if k > 0:
soluong = soluong + k
soluong1 = soluong1 % 4
else: soluong1 = soluong1
soluong = soluong + (soluong2*2 + soluong1) // 4
if (soluong2*2 + soluong1) % 4 != 0: soluong = soluong + 1
print('So phong it nhat la:', soluong)
Bài 4: (4,0đ)
#include <iostream>
#include <bits/stdc++.h>
#include <vector>
using namespace std;
int s[10006], n, i;
int main()
{
cout << "n = "; cin >> n;
cout << "Nhap cac so: ";
for (i = 0; i < n; i++)
cin >> s[i];
int soluong1, soluong2, soluong3, soluong4, soluong, k;
soluong1 = 0;
soluong2 = 0;
soluong3 = 0;
soluong4 = 0;
for (i = 0; i < n; i++)
{
if (s[i] == 4)
soluong4 = soluong4 + 1;
if (s[i] == 3)
soluong3 = soluong3 + 1;
if (s[i] == 2)
soluong2 = soluong2 + 1;
if (s[i] == 1)
soluong1 = soluong1 + 1;
}
soluong = soluong4;
soluong4 = 0;
if (soluong3 == soluong1)
{
soluong = soluong + soluong1;
soluong3 = 0;
soluong1 = 0;
}
if (soluong3 > soluong1)
{
soluong = soluong + soluong1;
soluong3 = soluong3 - soluong1;
soluong1 = 0;
}
if (soluong3 < soluong1)
{
soluong = soluong + soluong3;
soluong1 = soluong1 - soluong3;
soluong3 = 0;
}
soluong = soluong + soluong3;
soluong3 = 0;
k = soluong1 / 4;
if (k > 0)
{
soluong = soluong + k;
soluong1 = soluong1 % 4;
}
else
soluong1 = soluong1;
soluong = soluong + (soluong2 * 2 + soluong1) / 4;
if ((soluong2 * 2 + soluong1) % 4 != 0)
soluong = soluong + 1;
cout << "So phong it nhat la: " << soluong;
return 0;
}
