Условия задач

Последовательность целых чисел строится следующим образом:

Например, если а = 4, то получится последовательность 4, 7, 13, 16, .... По заданным а и n определить n-е число в этой последовательности. Известно, что а < 100 000 и n < 1 000 000.


В романе n глав (n < 100). В i-той главе ai страниц. Требуется издать роман в k томах так, чтобы количество страниц в самом толстом томе было минимально. Делить главы нельзя.
Написать программу определения количества страниц самого толстого тома.

Например, роман из трех глав (1, 2, 2 страницы, соответственно) издать в 2 томах можно двумя способами:

Тогда в первом способе самый толстый том имеет 3 страницы, а во втором - 4 страницы. Таким образом, ответ будет - 3 страницы.


Решение и ответы

Задача 1
uses crt; 
var a, n, i, b, c: longint; 
begin 
 clrscr; 
 a:=4;n:=4; 
 for i:=2 to n do 
   begin b:=a*a;a:=0; 
   while b>0 do 
    begin c:=b mod 10; 
    b:=b div 10; 
    a:=a+c; 
    end; 
   end; 
 writeln(a); 
 readln; 
end.

          Задача 2

          uses crt; 
          var Glavi,Tomi,I,Max,Maxx,J,Ng,S:longint; 
              Glav,Tom:array[1..100] of longint;
          procedure Tur; 
          var I,S,J:longint; 
          begin 
           if Tom[1]=Glavi-Tomi+1 then Tom[1]:=0 
           else 
            begin 
            I:=Tomi; S:=0; 
            while Tom[I]=1 do 
             begin S:=S+Tom[I]; 
             dec(I); 
             end; 
            S:=S+Tom[I]; 
            dec(S); 
            inc(Tom[I-1]); 
            for J:=I to Tomi-1 do Tom[I]:=1; 
            Tom[Tomi]:=S-Tomi+I; 
            end; 
           end;
          begin 
          clrscr; 
          write('Glav=');
          readln(Glavi); 
          write('Tom =');
          readln(Tomi); 
          for I:=1 to Glavi do 
           begin write(I,' str=');
           readln(Glav[I]); 
           end; 
          for I:=1 to Tomi-1 do Tom[I]:=1; 
          Tom[Tomi]:=Glavi-Tomi+1;
          Maxx:=maxlongint; 
          while Tom[1]<>0 do 
           begin 
           Ng:=1;
           Max:=0; 
           for I:=1 to Tomi do 
            begin 
            S:=0; 
            for J:=Ng to Ng+Tom[I]-1 do S:=S+Glav[J]; 
            inc(Ng,Tom[I]); 
            if Max<S then Max:=S; 
            end; 
           if Maxx>Max then Maxx:=Max; 
           Tur; 
           end; 
          writeln(Maxx); 
          readln; 
          end.