Var a,b,c: int64; i,j,k,n,m,r,p,s: integer; begin for i:=1 to 9 do // буква х for j:=1 to 9 do // буква г for k:=1 to 9 do // буква т for n:=0 to 9 do // буква о for m:=0 to 9 do // буква с for r:=0 to 9 do // буква у begin p:=k*k mod 10; a:=i*10000+p*1000+r*100+m*10+k; b:=j*100000+p*10000+n*1000+i*100+n*10+k; c:=p; for s:=1 to 10 do c:=c*10+p; if a*b=c then begin writeln('хруст = ',a); writeln('грохот = ',b); writeln(' = ',c); end; end; end.
Несмотря на длинное условие, эта задача совсем не сложная. Очевидно, что здесь речь идет о двух системах счисления, причем основание одной из систем в два раза больше, чем основание другой. По записи выражений (163*11):5+391 и (454*15-26):5+2633 можно предположить, что в первом случае основание меньше, а во втором - больше. Пусть x - основание меньшей системы счисления, тогда второе основание будет 2x. Переведем данные выражения в десятичную систему счисления по известному правилу: 1) ((1*(2x)^2+6*(2x)+3)*(1*2x+1)):5+(3*(2x)^2+9*2x+1)= ((4*x^2+12*x+3)*(2*x+1)):5+(12*x^2+18*x+1) 2) ((4*x^2+5*x+4)*(1*x+5)-(2*x+6)):5+(2*x^3+6*x^2+3*x+3)= ((4*x^2+5*x+4)*(x+5)-(2*x+6)):5+(2*x^3+6*x^2+3*x+3) После раскрытия скобок и приведения подобных, с учетом того, что числа в выражениях должны быть равны, получим: 8*x^3+88*x^2+108*x+8 = 14*x^3+55*x^2+42*x+29 т.е. 6*x^3-33*x^2-66*x+21=0 Очевидно, что нас интересуют только целочисленные положительные решения. Ещё раз посмотрим на выражение (454*15-26):5+2633 Из него видно, что основание системы счисления должно быть не меньше 7. Подставим 7 в уравнение, и! сразу обнаруживаем, что это и есть подходящее нам решение. Таким образом, в "десятке" одного было 7 человек, а в "десятке" другого - 14. Общее количество "шпиёнов" у каждого = 7820
i,j,k,n,m,r,p,s: integer;
begin
for i:=1 to 9 do // буква х
for j:=1 to 9 do // буква г
for k:=1 to 9 do // буква т
for n:=0 to 9 do // буква о
for m:=0 to 9 do // буква с
for r:=0 to 9 do // буква у
begin
p:=k*k mod 10;
a:=i*10000+p*1000+r*100+m*10+k;
b:=j*100000+p*10000+n*1000+i*100+n*10+k;
c:=p;
for s:=1 to 10 do c:=c*10+p;
if a*b=c then
begin
writeln('хруст = ',a);
writeln('грохот = ',b);
writeln(' = ',c);
end;
end;
end.
хруст = 21649
грохот = 513239
= 11111111111