Предмет: Информатика,
автор: zCredi
помогите написать программу в паскале с решением ребус A+AB+ABC=BCB
Ответы
Автор ответа:
0
Число АВС может принимать значение от 123 до 987
Исходя из этого пишем программу
var
Ast,Bst,Cst,s:string;
i,A,AB,ABC,BCB:integer;
f:boolean; {Признак того, что решение найдено}
begin
for i:=123 to 987 do
begin
if f=false then
begin
s:=IntToStr(i);
Ast:=s[1]; Bst:=s[2]; Cst:=s[3];
A:=StrToInt(Ast); AB:=StrToInt(Ast+Bst); ABC:=StrToInt(Ast+Bst+Cst); BCB:=StrToInt(Bst+Cst+Bst);
if A+AB+ABC=BCB then f:=true;
if (s[1]=s[2]) or (s[1]=s[3]) or (s[2]=s[3]) then f:=false; {цифры не должны повторяться}
end
end;
if f=true then writeln(A,'+',AB,'+',ABC,'=',BCB) else writeln('Решения нет')
end.
Исходя из этого пишем программу
var
Ast,Bst,Cst,s:string;
i,A,AB,ABC,BCB:integer;
f:boolean; {Признак того, что решение найдено}
begin
for i:=123 to 987 do
begin
if f=false then
begin
s:=IntToStr(i);
Ast:=s[1]; Bst:=s[2]; Cst:=s[3];
A:=StrToInt(Ast); AB:=StrToInt(Ast+Bst); ABC:=StrToInt(Ast+Bst+Cst); BCB:=StrToInt(Bst+Cst+Bst);
if A+AB+ABC=BCB then f:=true;
if (s[1]=s[2]) or (s[1]=s[3]) or (s[2]=s[3]) then f:=false; {цифры не должны повторяться}
end
end;
if f=true then writeln(A,'+',AB,'+',ABC,'=',BCB) else writeln('Решения нет')
end.
Автор ответа:
0
Нашел более простое решение:
var a,b,c: integer;
begin
for a:=1 to 9 do
for b:=1 to 9 do
if a<>b then for c:=0 to 9 do
if (a<>c) and (c<>b) then
if a+10*a+b+100*a+10*b+c=100*b+10*c+b
then writeln(a,'+',a,b,'+',a,b,c,'=',b,c,b)
end.
var a,b,c: integer;
begin
for a:=1 to 9 do
for b:=1 to 9 do
if a<>b then for c:=0 to 9 do
if (a<>c) and (c<>b) then
if a+10*a+b+100*a+10*b+c=100*b+10*c+b
then writeln(a,'+',a,b,'+',a,b,c,'=',b,c,b)
end.
Похожие вопросы
Предмет: Английский язык,
автор: Zhumahmet
Предмет: Математика,
автор: Аноним
Предмет: Физика,
автор: nastyastar8576
Предмет: Информатика,
автор: ася19961204
Предмет: Химия,
автор: WaleriMoriarty