Используем известный алгоритм, согласно которому нужно: а) перевести степень в двоичную систему счисления и отбросить самую левую единичку, получая битовую шкалу m. 45₁₀ = 101101₂, отбрасываем левую единицу, m=01101 б) положить результат R равным квадрату основания степени х: R=x² в) если значение самого левого бита равно 1, домножить R на х. У нас 0. Далее для каждого последующего бита в порядке слева направо выполнять: г) Возвести R в квадрат. Если бит единичный, домножить R на х. В нашем случае: R=R²x; R=R²x R=R² R=R²x
Окончательно для x⁴⁵: R=x²; R=R²x; R=R²x; R=R²; R=R²x
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
var a: array[0..100,0..100] of integer;
n, m, i, j, max, col: integer;
begin
read(n);
read(m);
for i: =0 to n-1 do
for j: =0 to m-1 do
begin
read(a[i,j]);
if max< a[i,j] then max: =a[i,j];
end;
for i: =0 to n-1 do
for j: =0 to m-1 do
if max=a[i,j] then begin inc(col); break; end;
writeln(col);
for i: =0 to n-1 do
for j: =0 to m-1 do
if max=a[i,j] then begin write(i, ' '); break; end;
end.
а) перевести степень в двоичную систему счисления и отбросить самую левую единичку, получая битовую шкалу m.
45₁₀ = 101101₂, отбрасываем левую единицу, m=01101
б) положить результат R равным квадрату основания степени х: R=x²
в) если значение самого левого бита равно 1, домножить R на х. У нас 0.
Далее для каждого последующего бита в порядке слева направо выполнять:
г) Возвести R в квадрат. Если бит единичный, домножить R на х.
В нашем случае:
R=R²x;
R=R²x
R=R²
R=R²x
Окончательно для x⁴⁵: R=x²; R=R²x; R=R²x; R=R²; R=R²x
x²¹) 21₁₀ = 10101₂ ⇒ 0101; R=x²; R=R²x; R=R²; R=R²x
x¹⁷) 17₁₀ = 10001₂ ⇒ 0001; R=x²; R=R²; R=R²; R=R²x
x¹¹) 11₁₀ = 1011₂ ⇒ 011; R=x²; R=R²x; R=R²x