35

Заданы два натуральных числа…

juror 10 марта 2023

Заданы два натуральных числа N и K. Вычислить остаток от деления первого числа на второе. Входные данные: Входной поток содержит два целыхчисла N и K (1 <= N <= 10^100, 1 <= K <= 10^9) записанные в двух отдельных строках. Выходные данные: В выходной поток выведите остаток от деления N на K. Пример входного файла (input.txt): 239 16 Пример выходного файла (output.txt): 15

категория: информатика

86

Type bignum=array[1… 100] of integer; var a, b: bignum; i, j, k, n_a, n_b: integer; procedure get_num (var m: bignum; var n: integer); var i: =0; s: string; begin write ('Введите число='); readln (s); s: =trim (s); n: =0; for i: =length (s) downto 1 do if s[i] in ['0'… '9'] then begin n: =n+1; m[n]: =strtoint (s[i]); end; end; function more (a, b: bignum; n_a: integer): boolean; var i: integer; f: =false; begin for i: =n_a downto 1 do begin if a[i] > b[i] then f: =true else if a[i] < b[i] then f: =false; if a[i] <> b[i] then break; end; more: =f; end; procedure show (m: bignum; n: integer); var i: integer; begin write ('Вывод '); for i: =n downto 1 do write (m[i]); writeln (); end; begin get_num (a, n_a); get_num (b, n_b); while (n_a >=n_b) and more (a, b, n_a) do begin if (a[n_a] > b[n_b]) then k: =n_a — n_b else if n_a > n_b then k: =n_a — n_b — 1 else k: =0; for i: =1 to n_b do begin a[i+k]: =a[i+k] — b[i]; if a[i+k] < 0 then begin for j: =i+k to n_a — 1 do begin if a[j] >=0 then break; a[j]: =a[j]+10; a[j+1]: =a[j+1] — 1; end end; end; if a[n_a]=0 then n_a: =n_a — 1; end; show (a, n_a); end.

пользователи выбрали этот ответ лучшим
Знаете другой ответ?

Есть интересный вопрос? Задайте его нашему сообществу, у нас наверняка найдется ответ!
Делитесь опытом и знаниями, зарабатывайте награды и репутацию, заводите новых интересных друзей!
Задавайте интересные вопросы, давайте качественные ответы и зарабатывайте деньги. Подробнее...