Kết quả ghi ra file văn bản: persist.out Dòng 1: Số nguyên là độ bền của N.. Hai chiếc giày chỉ có thể hợp thành một đôi nếu chúng là một cặp trái - phải có cùng kích thước.. Bờm quyết đ
Trang 1SỞ GD&ĐT VĨNH PHÚC
———————
ĐỀ CHÍNH THỨC
KỲ THI CHỌN HSG LỚP 9 THCS NĂM HỌC 2009 - 2010
ĐỀ THI MÔN: TIN HỌC
Thời gian làm bài: 150 phút, không kể thời gian giao đề
———————————
Tổng quan
Tên bài File chương trình File dữ liệu vào File dữ liệu ra thời gian
Lập trình giải các bài toán sau:
Bài 1 Số bền
Năm 1973, nhà Toán học Neil Sloan đưa ra khái niệm độ bền của một số nguyên không âm N như sau:
• Nếu N có một chữ số thì độ bền của N bằng 0
• Nếu N có từ 2 chữ số trở lên thì độ bền của N bằng độ bền của số nguyên là tích các chữ số của N cộng 1
Cho N, tính độ bền của N
Dữ liệu vào từ file văn bản: persist.inp
Dòng 1: Số nguyên N (0 ≤ N ≤ 2.000.000.000)
Kết quả ghi ra file văn bản: persist.out
Dòng 1: Số nguyên là độ bền của N
Ví dụ
Bài 2 Đổi giày
Bờm là chủ một cửa hiệu bán giày Một ngày nọ, Bờm kiểm tra kho và thấy trong kho còn lại 2*N chiếc giày, trong đó có N chiếc giày chân trái với kích thước lần lượt là a1, a2, …, aN, N chiếc giày chân phải với kích thước lần lượt là b1, b2, …, bN Hai chiếc giày chỉ có thể hợp thành một đôi nếu chúng là một cặp trái - phải có cùng kích thước Bờm quyết định mang một số giày đến nhà sản xuất để đổi
Hãy xác định giúp Bờm số ít nhất các chiếc giày cần đổi nếu cậu ta muốn cửa hiệu của mình có thể bán được N đôi giày
Dữ liệu vào từ file văn bản: shoes.inp
Dòng 1: Số nguyên N (1 ≤ N ≤ 100)
Dòng 2: N số nguyên a1, a2, …, aN (1 ≤ ai ≤ 1000, i = 1, 2,…, N)
Dòng 3: N số nguyên b1, b2, …, bN (1 ≤ bi ≤ 1000, i = 1, 2,…, N)
Kết quả ghi ra file văn bản: shoes.out
Dòng 1: Số nguyên là số giày ít nhất cần đổi
Ví dụ
3
1 3 1
3 2 1
1 Đổi 1 chiếc giày chân trái kích thước 1 thành giày chân trái kích thước
2 hoặc đổi 1 chiếc giày chân phải kích thước 2 thành giày chân phải kích thước 1
Bài 3 Đối xứng
Một số nguyên gọi là số đối xứng nếu viết dạng biểu diễn thập phân của số đó theo chiều ngược lại vẫn thu được chính số đó Cho số nguyên dương N có không quá 100 chữ số Hãy xác định số nguyên đối xứng nhỏ nhất lớn hơn N
Dữ liệu vào từ file văn bản: nextpal.inp
Dòng 1: Số nguyên N
Kết quả ghi ra file văn bản: nextpal.out
Dòng 1: Số nguyên kết quả
Ví dụ
nextpal.inp Nextpal.out
—Hết—
Cán bộ coi thi không giải thích gì thêm
Trang 2Hướng dẫn giải thuật Câu 1: Tư tưởng giải thuật:
- Xây dựng hàm tính tích các chữ số của N
- Khi nào N>9 thì tăng d, đồng thời gán N:=tich(N);
- Ra ngoài in ra d (chính là độ bền của N)
Bài giải:
Var f,g:text;
d,n:longint;
Function tich(x:longint):longint;
Var s,a:longint;
Begin
s:=1;
repeat
a:=x mod 10;
x:=x div 10;
s:=s*a;
until x=0;
tich:=s;
End;
BEGIN
Assign(f,'persist.inp'); Reset(f);
Assign(g,'persist.out'); Rewrite(g);
Read(f,n);
d:=0;
While n>9 do
begin
inc(d);
n:=tich(n);
end;
Write(g,d);
Close(g);
Close(f);
END.
Câu 2:
Tư tưởng thuật giải:
- Xét lần lượt từng chiếc dày bên trái.
- Tìm chiếc dày đầu tiên bên phải trùng với chiếc dày bên trài đang xét, nếu có trùng thì đánh dầu chiếc dày đó, còn không có trùng thì xét chiéu tiếp theo.
- Đếm số chiếc dày chưa đánh dấu bên phải chính là số dày phải đem đi đổi.
Bài giải:
Var f,g:text;
n,j,i,d:longint;
a,b:array [1 1000] of longint;
BEGIN
Assign(f,'shoes.inp');
Reset(f);
Assign(g,'shoes.out');
Rewrite(g);
Trang 3For i:=1 to n do read(f,a[i]); Readln(f);
For i:=1 to n do read(f,b[i]); d:=0;
i:=1;
repeat
j:=0;
repeat
inc(j);
until (a[i]=b[j]) or (j>n);
if a[i]=b[j] then b[j]:=0; inc(i);
until i>n;
for i:=1 to n do
if b[i]<>0 then inc(d); write(g,d);
Close(g);
Close(f);
END.