Максим
?>

ИНФОРМАТИКА 10 КЛАСС. Номер 9, 10

Информатика

Ответы

ismailovi670771
Var
    f: file of integer;
    i, n, x, t, k, max: integer;
    s: integer;

begin
    randomize;
    write('n=');
    readln(n);
    
    assign(f, 'numbers.dat');
    rewrite(f);
    
    max := -1;
    for i := 1 to n do
    begin
        x := random(4800) + 20;
        write(f, x);
        write(x, ' ');
        if x > max then max := x;
    end;
    writeln;
    
    seek(f, 0);
    k := 0;
    while not eof(f) do
    begin
        read(f, x);
        t := x;
        s := 0;
        while t > 0 do
        begin
            s := s + sqr(t mod 10);
            t := t div 10;
        end;
        if x mod s = 0 then k := k + 1;
        if x > max - 50 then write(x, ' ');
    end;
    writeln;
    
    writeln(k);
end.
kchapurina591
Пусть исходные координаты чертежника (x;y). Смоделируем алгоритм:
0) (x;y)
1) (x-1;y-2)
2) n раз делается одно и то же: первая координата изменяется на a, затем из нее вычитается 1, вторая координата изменяется на b, затем вычитается 2. В результате координаты равны:
(x-1+n*(a-1); y-2+n*(b-2))
3) (x-1+n*(a-1)-20; y-2+n*(b-2)-12)
Концом работы программы является попадание в стартовую позицию. То есть x-1+n*(a-1)-20=x => n*(a-1)=21
y-2+n*(b-2)-12=y => n*(b-2)=14
Тогда n нужно искать среди делителей чисел 21 и 14. Точнее ответом будет НОД(21, 14)=7.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

ИНФОРМАТИКА 10 КЛАСС. Номер 9, 10
Ваше имя (никнейм)*
Email*
Комментарий*