Tính xem có tất cả bao nhiêu vé xe hạnh phúc... Có bao nhiêu số tự nhiên có đúng 6 chữ số được tạo thành từ A, sao cho số đó có ít nhất một cặp số 0,2 đứng cạnh nhau.
Trang 11
Trang 5Bài toán 1: Có bao nhiêu số tự nhiên lẻ có 5 chữ số, trong số đó phải có mặt chữ số 3?
Bài toán 2: Cho các chữ số {0,1,2,3,4,5,6} Tính tổng của các số tự nhiên chẵn, có 4 chữ số đôi một khác nhau, được lập từ 7 chữ số trên
Bài toán 3: Cho A={0,1,2,3,5,7,8,9} Có bao nhiêu số tự nhiên chẵn
có 5 chữ số, trong số đó phải có mặt số 1 và số 3, được tạo thành từ A
1 Bây giờ ta bắt tay vào giải quyết Bài toán 1 (bằng PASCAL)
Bước1:Xây dựng thuật toán:
- Ta cần xây dựng số abcde¯¯¯¯¯¯¯¯¯¯¯¯, vậy cần
có 5 biến a,b,c,d,e kiểu shortint
- Thêm một biến S kiểu longint để nhận kết quả.
- Đầu tiên gán kết quả S:=0
- Vì a≠0 nên ta sẽ cho a chạy từ 1 đến 9
- b,c,d ta cho chạy từ 0 đến 9
- Vì abcde¯¯¯¯¯¯¯¯¯¯¯¯ là số lẻ nên ta cho e chạy từ 1 đến 9 và chỉ thực hiện công việc tiếp nếu e {∈ 1,3,5,7,9}
- Cuối cùng nếu số tạo thành thoả mãn điều kiện "có mặt chữ số 3"
thì ta cho kết quả S tăng thêm 1 đơn vị
Thuật toán thật đơn giản phải không nào!
Bước 2: Viết code và trình bày kết quả:
[quotename='PASCAL CODE 01']
Var a,b,c,d,e: shortint;
S: longint;
Begin
S:=0;
for a:=1 to 9 do
for b:=0 to 9 do
for c:=0 to 9 do
for d:=0 to 9 do
for e:=1 to 9 do
if ((e=1)or(e=3)or(e=5)or(e=7)or(e=9))and((a=3)or(b=3)or(c=3)or(d=3)or( e=3)) then
S:=S+1;
Write('So cac so thoa man la S= ',S);
Readln;
End
[/quote]
Chạy chương trình trên ta được kết quả là So cac so thoa man la S= 21672
2 Giải bài toán 2:
5
Trang 6Bài toán 2: Cho các chữ số {0,1,2,3,4,5,6} Tính tổng của các số tự nhiên chẵn, có 4 chữ số đôi một khác nhau, được lập từ 7 chữ số trên
Bước1:Xây dựng thuật toán:
- Ta cần xây dựng số abcd¯¯¯¯¯¯¯¯¯¯, vậy cần
có 4 biến a,b,c,d kiểu shortint
- Thêm một biến S kiểu longint để nhận kết quả.
- Đầu tiên gán kết quả S:=0
- Vì a≠0 nên ta sẽ cho a chạy từ 1 đến 6
- b,c ta cho chạy từ 0 đến 6
- Vì abcd¯¯¯¯¯¯¯¯¯¯ là số chẵn nên ta cho d chạy từ 0 đến 6 và chỉ thực hiện công việc tiếp nếu d {∈ 0,2,4,6}
- Cuối cùng nếu số tạo thành thoả mãn điều kiện "các chữ số đôi một khác nhau"
thì ta cho kết quả S cộng thêm giá trị
của abcd¯¯¯¯¯¯¯¯¯¯=1000∗a+100∗b+10∗c+d
Thuật toán thật đơn giản phải không nào!
Bước 2: Viết code và trình bày kết quả:
[quotename='PASCAL CODE 02']
Var a,b,c,d: shortint;
S: longint;
Begin
S:=0;
for a:=1 to 6 do
for b:=0 to 6 do
for c:=0 to 6 do
for d:=0 to 6 do
if ((d=0)or(d=2)or(d=4)or(d=6))and((a<>b)and(a<>c)and(a<>d)and(b<>c) and(b<>d)and(c<>d)) then
S:=S+1000*a+100*b+10*c+d;
Write('So cac so thoa man la S= ',S);
Readln;
End
[/quote]
Chạy chương trình trên ta được kết quả là So cac so thoa man la
S= 1577160
3 Giải bài toán 3
Bài toán 3: Cho A={0,1,2,3,5,7,8,9} Có bao nhiêu số tự nhiên chẵn
có 5 chữ số, trong số đó phải có mặt số 1 và số 3, được tạo thành từ A
6
Trang 7Bước1:Xây dựng thuật toán:
- Ta cần xây dựng số abcde¯¯¯¯¯¯¯¯¯¯¯¯, vậy cần
có 5 biến a,b,c,d kiểu shortint
- Thêm một biến S kiểu longint để nhận kết quả.
- Đầu tiên gán kết quả S:=0
- Vì a≠0 nên ta sẽ cho a chạy từ 1 đến 9 và chỉ lấy các giá trị thuộc A
- b,c,d ta cho chạy từ 0 đến 9 và chỉ lấy các giá trị thuộc A
- Vì abcde¯¯¯¯¯¯¯¯¯¯¯¯ là số chẵn nên ta cho e chạy từ 0 đến 8 và chỉ thực hiện công việc tiếp nếu e {∈ 0,2,8}
- Cuối cùng nếu số tạo thành thoả mãn điều kiện "phải có mặt chữ số 1 và chữ số 3"
thì ta cho kết quả S tăng thêm 1 đơn vị
Thuật toán thật đơn giản phải không nào!
Bước 2: Viết code và trình bày kết quả:
[quotename='PASCAL CODE 03']
Var a,b,c,d,e: shortint;
S: longint;
Begin
S:=0;
for a:=1 to 9 do
for b:=0 to 9 do
for c:=0 to 9 do
for d:=0 to 9 do
for e:=0 to 8 do
if ((e=0)or(e=2)or(e=8))and((a<>4)and(a<>6))and((b<>4)and(b<>6))and(( c<>4)and(c<>6))and((d<>4)and(d<>6))and(((a=1)and((b=3)or(c=3)or(d=3 )))or((b=1)and((a=3)or(c=3)or(d=3)))or((c=1)and((a=3)or(b=3)or(d=3)))or( (d=1)and((a=3)or(b=3)or(c=3))))
then
S:=S+1;
Write('So cac so thoa man la S= ',S);
Readln;
End
[/quote]
Chạy chương trình trên ta được kết quả là So cac so thoa man la S= 1644
7
Trang 8Bài toán 4: Vé xe hạnh phúc:
- Một vé xe buýt bất kỳ có mã số là một dãy gồm 6 số tự nhiên, được gọi
là vé xe hạnh phúc nếu tổng của 3 chữ số đầu bằng tổng của 3 chữ số cuối
Tính xem có tất cả bao nhiêu vé xe hạnh phúc
Bài làm
Var a,b,c,d,e,f: shortint;
S: longint;
Begin
S:=0;
for a:=0 to 9 do for b:=0 to 9 do
for c:=0 to 9 do
for d:=0 to 9 do for e:=0 to 9 do for f:=0 to 9 do
if a + b + c = d + e + f then S:=S+1;
Write('So cac so thoa man la S= ',S);
Readln;
End
Bài toán 6:
- Cho tập A={0,1,2,4,7,8,9} Có bao nhiêu số tự nhiên nhỏ hơn 80000 mà chia hết cho 3, có các chữ số được chọn từ tập A
Số tự nhiên lớn nhất nhưng nhỏ hơn 80000 là 79999
vậy ta cho a chạy từ 1 -> 7 và b,c,d,e chạy từ 0 -> 9, điều kiện a,b,c,d,e khác 3;5;6 (do 3;5;6 không có trong tập A)
Thêm điều điện chia hết cho 3 là a+b+c+d+e chia hết cho 3
vậy ta có bài làm sau
8
Trang 9Bài toán 7:
- Cho tập A={0,1,2} Có bao nhiêu số tự nhiên có đúng 6 chữ số được tạo thành từ A, sao cho số đó có ít nhất một cặp số 0,2 đứng cạnh nhau
Câu này e ko chắc với ý tưởng của mình
do 0 và 2 đứng cạnh nhau nên tổng của chúng bằng 2, ngoài ra trong tập A, ngoài 0 và 2 thì không còn số nào có tổng bằng 2 nên ta có bài làm sau
Bài 9: Viết chương trình tính N!! (giai thừa kép) với N!! được định nghĩa như sau:
9
Trang 10N!!=1 với N=0.
N!!=1.3.5….Nvới n lẻ.
N!!=2.4.6…N với n chẵn
program giaithuakep;
uses crt;
var gt:longint;
n,tg:integer;
Begin
Clrscr;
Repeat
write('Nhap n=');readln(n);tg:=n; Until n>=0;
gt:=1;
while n>0 do
begin
gt:=gt*n;
n:=n-2;
end;
writeln(tg,'!! = ',gt);
Readln;
End.
10