Var
input,output:text;
n,i,j,g,nm,ans,t:integer;
ara:array[0..1000] of integer;
ar,arq:array[0..1000] of integer;
ts,sum,a:integer;
beginassign(input,'f.in');reset(input);
assign(output,'f.out');rewrite(output);
readln(input,a,n);
ans:=10000;
for i:=1 to n do
begin
read(input,ar[i]);
ts:=ts+2*ar[i];
end;
if ts<a then writeln(output,'-1') else
begin
ara[1]:=3;for i:=2 to 15 do
begin
ara[i]:=3*ara[i-1];
end;
for i:=1 to ara[n] do
begin if arq[n]<2 then
begin inc(arq[n]);
sum:=sum+ar[n];inc(nm); end else
begin g:=n;while arq[g]>1 do
begin sum:=sum-ar[g]*arq[g];dec(nm,arq[g]);arq[g]:=0;dec(g);
end;
inc(arq[g]);sum:=sum+ar[g];inc(nm);
end;
if sum=a then
begin
if nm<ans then
ans:=nm;end;
end;
if ans>1000 then writeln(output,'0') else
writeln(output,ans); end;
close(output);close(input);end.
Считаем количество символов в парольном алфавите
10 (цифры) + 11 строчных + 11 прописных = 32 символа
5 бит на символ (2^5 = 32)
15 символов * 5 бит = 75 бит, при записи пароля округляем вверх до байта, получим 10 байт.
30 паролей * 10 байт = 300 байт
Смещение вне цикла составляет (-12, 21), т.е. смещение внутри цикла = (12, -21)
Числа 11 и 5 не представляют никакого интереса, т.к. нам не требуется искать значения a и b, важно только то, что мы можем менять сдвиг в цикле как угодно, меняя только эти переменные.
Максимальное N = НОД(12, 21) = 3
Т.е. чертежник сдвигается на (12, -21), три раза выполнив операцию сдвига на (4, -7)
Программа:
program summa;
var a: integer;
begin
read(a);
a := a MOD 10;
write(a);
end.
Ответ на вопрос:
5