Задание »

Ciparu summa un reizinājums

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


Uzdevums

Ceks nopūtās un aizšķīra grāmatu «Matemātika 5. klasei». Viņam tik ļoti bija apnicis krāmēties ar garlaicīgo aritmētiku – saskaitīšanu, atņemšanu, reizināšanu un dalīšanu. Viņam vajadzēja ko interesantāku… Ceks domāja, domāja, un aizdomājās – nez, kas notiek, ja skaitlim n pieskaita klāt tā ciparu summu un tā ciparu reizinājumu. «Hmm. Interesanti, » noteica Ceks. Un ja nu to izdara pavisam n reizes? Tad būtu pavisam interesanti.

Ceks nolēma pamēģināt. Sāka viņš ar skaitli 3.
n0 = 3
n1 = 3 + 3 + 3 = 9 (skaitlis n0 + tā ciparu summa + tā ciparu reizinājums)
n2 = 9 + 9 + 9 = 27
n3 = 27 + 9 + 14 = 50

«Wow!» priecīgs iesaucās Ceks. Viņam iepatikās. Tagad viņš sāka ar skaitli n0 = 15. Pēc 15 iterācijām Ceks ieguva skaitli, kas pārsniedza 1000. Ceks saprata, ka tālu šādi netiks, un ka viņam nepieciešama programma, kas viņam palīdzētu.

Jūsu uzdevums ir uzrakstīt programmu, kas dotam skaitlim n0 atrod skaitli nn, kur ni = ni-1 + (ni-1 ciparu summa) + (ni-1 ciparu reizinājums).

Ievaddati

Faila sumreiz.in pirmā un vienīgā rindiņa satur skaitli n0 (0 < n < 100’000).

Izvaddati

Faila sumreiz.out jāizvada rezultējošais nn, kas iegūts veicot minēto darbību n reizes.

Piemērs

sumreiz.in sumreiz.out
3
50
sumreiz.in sumreiz.out
15
1086

Atsauces

Autors: Ģirts Folkmanis
2001. gada oktobris


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

Решение »

var n0,n,s,p,z,v,cod,n_z,i:longint;
n_s,name_in,name_out:string;
f_in,f_out:text;
begin
name_in:='sumreiz.in';
Assign(f_in,name_in);
Reset(f_in);
read(f_in,n0);
Close(f_in);
i:=0;
n:=n0;
while i<n0 do
begin
i:=i+1;
Str(n,n_s);
z:=Length(n_s);
s:=0;
p:=1;
for v:=1 to z do
begin
Val(n_s[v],n_z,cod);
s:=s+n_z;
p:=p*n_z;
end;
n:=n+s+p;
end;
name_out:='sumreiz.out';
Assign(f_out,name_out);
Rewrite(f_out);
write(f_out,n);
Close(f_out);
end.

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

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