Giúp mih với ạ:
Câu 1: Tìm Số
Cho một số nguyên dương , cộng tất cả các chữ số của ta được số . Nếu là số có một chữ số thì dừng lại, ngược lại tiếp tục cộng các chữ số của được số mới là , tiếp tục quá trình trên với số cho đến khi kết quả là số có một chữ số.
Ví dụ: = 123456; = 1 + 2 + 3 + 4 + 5 + 6 = 21; = 2 + 1 = 3; khi = 3 thì dừng
lại.
Yêu cầu: Cho số nguyên dương . Hãy tìm số có một chữ số của quá trình trên.
Dữ liệu vào: Từ file văn bản TIMSO.INP một dòng chứa số nguyên dương (số chữ số của ≤ 10 ).
Kết quả: Ghi vào file văn bản TIMSO.OUT một số tự nhiên là kết quả tìm được.
Ví dụ:
Ràng buộc:
• Có 50% số test ứng với 50% số điểm của bài có ≤ 10 ;
• Có 25% số test ứng với 25% số điểm của bài có số chữ số của ≤ 255;
• Có 25% số test còn lại ứng với 25% số điểm của bài có số chữ số của ≤ 10 .
uses crt;
var n,d,max:longint;
function tcs(n:longint):longint;
var s:string; i,k:longint;
begin
str(n,s); tcs:=1;
for i:=1 to length(s) do
begin
val(s[i],k);
tcs:=tcs*k;
end;
end;
function dob(n:longint):longint;
begin dob:=0;
while n>10 do
begin
n:=tcs(n);inc(dob);
end;
end;
begin
clrscr;
write(‘n=’);readln(n);
write(dob(n));
readln
end.
uses crt;
var f:text; s:string; n,i,t,tong:longint;
begin
clrscr;
assign(f,’TIMSO.INP’); reset(f);
readln(f,s);
close(f);
assign(f,’TIMSO.OUT’); rewrite(f);
val(s,n);
while n<>0 do
begin
inc(t,n mod 10);
n:=n div 10;
end;
while t<>0 do
begin
inc(tong,t mod 10);
t:=t div 10;
end;
writeln(f,tong);
close(f);
readln
end.