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;
Пусть в семеричной сс число записывается в виде xxyy, тогда оно равно x * 7^3 + x * 7^2 + y * 7^1 + y * 7^0 = 49x * 8 + y * 8 = (49x + y) * 8 Это число должно быть полным квадратом и 1 <= x <= 6, 0 <= y <= 6.
Число - полный квадрат, делится на 8 -> делится на 16 -> 49x + y делится на 2 -> x и y одинаковой четности. 1) x = 2X, y = 2Y; 1 <= X <= 3, 0 <= Y <= 3. 49X + Y - полный квадрат. - X = 1: 49 + Y - п.к., Y = 0 - X = 2: 98 + Y - п.к., Y = 2 (не подходит, x и y совпадают) - X = 3: 147 + Y - п.к., Y > 3 2) x = 2X + 1, y = 2Y + 1; 0 <= X <= 2, 0 <= Y <= 2. 49X + Y + 25 - полный квадрат - X = 0: 25 + Y - п.к., Y = 0 (не подходит, x и y совпадают) - X = 1: 74 + Y - п.к., Y > 2 - X = 2: 123 + Y - п.к., Y > 2
ответ: 2200 (в десятичной сс это 784 = 28^2)
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку