Mình rút gọn câu a với câu b của bạn Nguyễn Lê Phước Thịnh ( đề HSG cấp trường mới làm ):
a/ Uses crt;
Var i,n,d:integer;
Begin
Clrscr;
d:=0;
write('Nhap n= '); readln(n);
n:=abs(n);
while n>0 Do
Begin
n := n div 10;
d:=d+1;
end;
writeln('Co ',d,' chu so');
Readln
End.
b/ Uses crt;
Var n , s , k: integer;
Begin
Write(‘ Nhap n=’); Readln(n);
S := 0;
While n<>0 do
Begin
k := n mod 10;
n := n div 10;
S := S + k;
End;
Writeln( ‘Tong cac chu so la: ',S);
Readln;
End.
đơn giản mà
uses crt;
var n:longint;
st:string;
i,d,t,x,y,j,t1,a,dem,kt,t2:integer;
ngto:array[1..100]of integer;
begin
clrscr;
write('nhap n='); readln(n);
str(n,st);
d:=length(st);
writeln('so chu so cua so ',n,' la: ',d);
t:=0;
for i:=1 to d do
begin
val(st[i],x,y);
t:=t+x;
end;
writeln('tong cac chu so cua ',n,' la: ',t);
{---------------------cau-c--------------------------}
writeln('cac so hoan thien nho hon hoac bang ',n,' la: ');
for j:=1 to n do
begin
a:=j;
t1:=0;
for i:=1 to a-1 do
if a mod i=0 then begin
t1:=t1+i;
end;
if t1=a then write(a,' ');
end;
{---------------------cau-d---------------------------}
writeln;
dem:=0;
for i:=2 to n do
begin
kt:=0;
for j:=2 to i-1 do
if i mod j=0 then kt:=1;
if kt=0 then
begin
inc(dem);
ngto[dem]:=i;
end;
end;
t2:=0;
for i:=1 to dem do
t:=t+sqr(ngto[i]);
writeln('tong binh phuong cac so nguyen to tu 1 toi ',n,' la: ',t);
readln;
end.