Tải bản đầy đủ (.doc) (6 trang)

BT tự sưu tầm chuyên tin THPT

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (157.39 KB, 6 trang )

Tổng các chữ số
Cho số nguyên dương n. VIết các số nguyên liên tiếp từ 1 tới n trong hệ thập phân để tạo ra một dãy
các chữ số. Hãy tính tổng các chữ số của dãy.
Ví dụ : với n = 12, ta có dãy chữ số 123456789101112 với tổng là 51.
Test n=
12
123
2468
13579
12481632
23456789
9876543210
123123123123
123456789123456789
98765432100123456789
Mã nguồn
Program Bai_1;
Type mang = array[1..9] Of String;
Var st,s,kq,bx:string;
k,i,j,N,h,y,u:integer;
Lap,A,F,C:array[1..21] Of string;
Function Cong(a,b:string):string;
Var s:string;
t,i:integer;
Begin
While (length(a)While (length(b)s:='';
t:=0;
For i:=length(a) downto 1 do
Begin


t:=t+ord(a[i])+ord(b[i])-96;
s:=chr(t mod 10 +48)+s;
t:=t div 10;
End;
If t>0 then s:=chr(t+48)+s;
cong:=s;
Exit;
End;
Function nhan(a:string;b:longint):string;
Var i,t:integer;
s:string;
Begin
s:='';
t:=0;
For i:=length(a) downto 1 do
Begin
t:=t+(ord(a[i])-48)*b;
s:=chr(t mod 10 +48)+s;
t:=t div 10;


End;
If t>0 then s:=chr(t+48)+s;
While (length(s)>1) and (s[1]='0') do Delete(s,1,1);
nhan:=s;
Exit;
End;
Function tongcs(i:integer):string;
Var j,x,q,df,l:integer;
bs,khong,st,p,sum,s1,s2,c,sumcs:string;

ch:Char;
Begin
if s[i]='0' then exit;
khong:='';
st:='';
sumcs:='1';
c:='1';
bs:='';
df:=0;
Val(s[i],x,q);
For j:=1 to length(s)-i do khong:=khong+'0';
For j:=2 to x-1 do
Begin
Str(j,s2);
sumcs:=cong(sumcs,s2);
End;
sumcs:=sumcs+khong;
st:=s[i]+khong;
sum:=A[length(khong)];
If s[i]>'1' then
Begin
sum:=cong(cong(nhan(sum,x),s[i]),sumcs);
inc(h);
F[h]:=sum;
End Else
Begin
inc(h);
F[h]:=(cong(sum,s[i]));
End;
End;

Procedure Init;
Var d,j,i,x:integer;
s1,s2,si:string;
Begin
C[1]:='1';
C[2]:='3';
C[3]:='6';
C[4]:='10';
C[5]:='15';
C[6]:='21';
C[7]:='28';
C[8]:='36';
C[9]:='45';
A[1]:='45';
A[2]:='900';


A[3]:='13500';
A[4]:='180000';
A[5]:='2250000';
A[6]:='27000000';
A[7]:='315000000';
A[8]:='3600000000';
A[9]:='40500000000';
A[10]:='450000000000';
A[11]:='4950000000000';
A[12]:='54000000000000';
A[13]:='585000000000000';
A[14]:='6300000000000000';
A[15]:='67500000000000000';

A[16]:='720000000000000000';
A[17]:='7650000000000000000';
A[18]:='81000000000000000000';
A[19]:='855000000000000000000';
A[20]:='9000000000000000000000';
k:=0;
Write('Nhap N:');Readln(s);
For i:=1 to length(s)-1 do
Begin
Val(s[i],j,x);
s1:=Copy(s,i+1,length(s));
inc(k);
Lap[k]:=nhan(s1,j);
End;
bx:=Lap[1];
For i:=2 to k do
bx:=cong(Lap[i],bx);
writeln;
End;
BEGIN
Init;
h:=0;
For i:=1 to length(s)-1 do
tongcs(i);
Val(s[i+1],y,u);
kq:=F[1];write(F[1],' ');
For i:=2 to length(s) do
begin
kq:=cong(F[i],kq);
end;

writeln;
kq:=cong(kq,C[y]);
kq:=cong(kq,bx);
readln
end.




Có một mê cung hình chữ nhật kích thước mxn gồm các ô vuông đơn vị trên mỗi ô vuông ch ứa 1
trong các ký tự sau đây
Kí tự 1 : 0 nếu ô đó an toàn ; x nếu ô đó có cạm bẫy , e nếu ô đó có một nhà thám hiểm đang đứng.
Duy nhất chỉ có một ô ghi chữ e nhà thám hiểm có thể từ một ô đi sang một trong các ô chung cạnh
với ô đang đứng. Một cách đi thoát khỏi mê cung là hành trình đi qua các ô an toàn ra m ột biên. Hãy
chỉ giúp cho nhà thám hiểm một hành trình thoát khỏi mê cung
input
67
0000000
1110110
0011E10
0000010
0001100
0000000
output: 5

Trận động đất hôm 1/4/2016 tại Uruk khiến rất nhiều người bị thương. Công vi ệc của bác sĩ Kang
Mo Yeon và đồng nghiệp trở nên ô cùng bận rộn. Nhưng thuốc còn lại trong kho có hạn. Chỉ có m
hộp thuốc sát trùng và n hộp thuốc kháng sinh.
Đầu tiên, bác sĩ Kang cần chọn k hộp thuốc ( sát trùng hoặc kháng sinh) để đi cứu trợ khẩn cấp.
Phần còn lại, bác sĩ sẽ chọn ra các nhóm, mỗi nhóm gồm 2 hộp thuốc sát trùng và 1 hộp thuốc

kháng sinh để chữa bệnh cho các bệnh nhân.
Hãy giúp bác sĩ Kang xác định số nhóm nhiều nhất để chi cho các bệnh nhân
Dữ Liệu:
Gồm 1 dòng chứa m,n,k <= 10^9 cách nhau ít nhất 1 dấu cách.
Kết quả:
Một số nguyên duy nhất là số nhóm nhiều nhất chọn được để chia cho bệnh nhân.
Ví dụ:
in: 12 7 5
out: 4



×