Professional Documents
Culture Documents
BTL1
BTL1
Ngày 06/10/2023
Điểm
Bài 1:
Đề bài: Cho hình vuông gồm 25 hình vuông đơn vị. Hãy điền các số từ 0
đến 9 vào mỗi hình vuông đơn vị sao cho những điều kiện sau được thỏa mãn:
a) Đọc từ trái sang phải theo hàng ta nhận được 5 số nguyên tố có 5 chữ số;
b) Đọc từ trên xuống dưới theo cột ta nhận được 5 số nguyên tố có 5 chữ số;
c) Đọc theo hai đường chéo chính ta nhận được 2 số nguyên tố có 5 chữ số;
d) Tổng các chữ số trong mỗi số nguyên tố đều là S cho trước.
Ví dụ hình vuông dưới đây với S = 11.
3 5 1 1 1
5 0 0 3 3
1 0 3 4 3
1 3 4 2 1
1 3 3 1 3
Bài 2:
Đề bài: Liệt kê các xâu nhị phân có độ dài n.
1.1 Sơ đồ khối:
Chú thích:
Thứ tự điền các ô:
1 2 3 4 5
6 13 16 12 17
7 18 11 20 21
8 10 22 14 24
9 19 23 25 15
Hàm nguyento() : khởi tạo mảng đánh dấu các vị trí là số nguyên tố
Hàm điền (1): Hàm duyệt các phần tử trong danh sách nguyên tố và điền phần tử
thỏa mãn vào hình vuông cần tìm.
Bắt đầu
Sơ đồ khối chương trình :
nguyento()
Sai
(1) x X có chứa 0
Điền hàng 1 cột 1
Đúng
In hình vuông
5x5
Sơ đồ khối hàm điền (1):
End
(1)
i <k sai
int k, k là tổng số
phần tử cảu mảng X
đúng
Kiểm tra x có
thỏa mãn sai
i++
Các ô cần diền
đúng
End
int x[100000];
void nguyento(){
x[i] = 1;
x[0] = 0;
x[1] = 0;
for(int i=2;i<=sqrt(100000);i++)
x[j] = 0;
int s=0;
while(n>0){
s += n%10;
n /= 10;
return s;
}//tong chu so
while(n>0){
int k= n%10;
if (k==0) return 0;
n /= 10;
return 1;
a[hang][i] = k%10;
k/=10;
k/=10;
int k=0,q=0;
for(int i=0;i<5;i++){
k=k*10+a[i][4];
q=q*10+a[4][i];
if(x[k]!=1||x[q]!=1) return 0;
return 1;
int t=0;
for(int i=0;i<=4;i++){
t+=a[n][i];
return t;
int t=0;
for(int i=0;i<=4;i++){
t+=a[i][n];
return t;
int k=0;
k=k*10+a[j1][j1];
}return k;
int k=0;
k=k*10+a[4-j0][j0];
}
return k;
int main(){
int b[10005];
nguyento();
int s,n;
int k=0,h=0;
cin >> s;
cin >> s;
};int a[5][5]={0};
else{
for(int i=10000;i<100000;i++){
b[k]=i;
k++;
for(int i=0;i<k;i++){//hang 1
if(ktrahang0(b[i])){
n=b[i];
hang(a,0,n);
for(int i9=0;i9<k;i9++){//cot 1
if(ktrahang0(b[i9])&&b[i9]/10000==a[0][0]){
n=b[i9];
cot(a,0,n);
n=b[i0];
n /= 10;
n = b[i1];
for(int i2=0;i2<k;i2++){//hang 2
n = b[i2];
hang(a,1,n);
for(int i8=0;i8<k;i8++){//cot 2
n = b[i8];
cot(a,1,n);
for(int i3=0;i3<k;i3++){//hang 3
if(b[i3]/100==a[2][0]*100+a[2][1]*10+a[2][2]){
n=b[i3];
hang(a,2,n);
for(int i7=0;i7<k;i7++){//cot 3
if(b[i7]/100==a[0][2]*100+a[1][2]*10+a[2][2]){
n=b[i7];
cot(a,2,n);
for(int i4=0;i4<k;i4++){//hang 4
if(b[i4]/10==a[3][0]*1000+a[3][1]*100+a[3][2]*10+a[3][3]
n=b[i4];
hang(a,3,n);
for(int i6=0;i6<k;i6++){//cot 4
if(b[i6]/10==a[0][3]*1000+a[1][3]*100+a[2][3]*10+a[3][3]){
cot(a,3,n);
if (tongcot(a,4)!=s||tonghang(a,4)!=s) ok=0;
if(ktcothang4(a)==0) ok =0;
for(int j2=0;j2 <5;j2++){//kiem tra
if(x[tonghang(a,j2)]!=1) ok=0;
if(x[tongcot(a,j2)]!=1) ok=0; }
if(tongcs(cheophu(a))!=s||x[cheophu(a)]!=1) ok=0;
if(tongcs(cheochinh(a))!=s||x[cheochinh(a)]!=1) ok=0;
if(ok==1){
cout<<endl;
h++;
}}}}}}}
}}
}if(h==0) cout<<" Khong co ket qua phu hop voi tong s vua nhap!!\n";
else cout << " So hinh thoa man la: "<<h; return 0;
}
1.3Kết quả
2.1 Sơ đồ khối
Check(S) : kiểm tra xâu S có phải cấu hình cuối cúng
Cấu hình cuối cùng: Là xâu nhị phân gồm n chữ số 0
Sinh(): Duyệt xâu S từ phải sang trái. Gán chữ só 0 đấu tiên thành 1 và tất cả
chữ sô bên phải nó thành 0
Start
Sai
Đúng Check(S)
Sinh ()
End
In Xâu S