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