Задание »

Supersumma

ID: super
Grūtība: 1/5
Laika limits: 1


Uzdevums

Jebkuram naturālam skaitlim n var aprēķināt ciparu summu.
Arī šai iegūtajai summai var aprēķināt ciparu summu.
Tā turpinot, kādreiz noteikti iegūs vienciparu skaitli.
Sauksim to par n supersummu.
Uzrakstiet programmu, kas dotiem diviem naturāliem skaitļiem k un m atrod reizinājuma k*m supersummu!

Ievaddati

Teksta faila super.in satur divas rindas.
Pirmajā rindā dota skaitļa k, bet otrajā – skaitļa m vērtība.
Zināms, ka neviena skaitļa ciparu skaits nepārsniedz 200.

Izvaddati

Teksta faila super.out vienīgajā rindā jāizvada viens skaitlis – k*m supersumma.

Piemērs

super.in super.out
41
17
4

Atsauces

Uzdevums izmantots Latvijas 15.informātikas olimpiādes I (skolas) kārtā.
Autors: M.Opmanis


© 2001-2002 olimps! http://www.lio.lv/olimps/

Решение »

var i,od,code,k_i,m_i:integer;
k,m,t:string;
f:text;
begin
Assign(f,'super.in');
Reset(f);
readln(f,k);
readln(f,m);
Close(f);
if length(m)>length(k) then begin
t:=m;
m:=k;
k:=t;
end;
while (length(k)>1) or (length(m)>1) do begin
k_i:=0;
m_i:=k_i;
for i:=1 to length(k) do
begin
Val(Copy(k,i,1),od,code);
k_i:=k_i+od;
if i<=length(m) then begin
Val(Copy(m,i,1),od,code);
m_i:=m_i+od;
end;
end;
Str(k_i,k);
Str(m_i,m);
if length(m)>length(k) then begin
t:=m;
m:=k;
k:=t;
end;
end;
od:=k_i*m_i;
str(od,k);
if length(k)>1 then begin
k_i:=od div 10 + od mod 10;
str(k_i,k);
if length(k)>1 then k_i:=k_i div 10 + k_i mod 10;
end
else k_i:=od;
Assign(f,'super.out');
Rewrite(f);
write(f,k_i);
Close(f);
end.

Результат: 10/10

Добавить комментарий