Другие языки программирования и технологии

Найти трехзначные числа a, b, c, все цифры которых различны и удовлетворяют уравнению a^2 – b^2 – c^2 = a – b – c.

Составить программу в Pascal или написать просто ответы
OS
Otabek Suleimenov
144
uses crt;
var a,b,c:longint;
begin
for a:= 100 to 999 do
for b:= 100 to 999 do
for c:= 100 to 999 do
if (a*a-b*b-c*c=a-b-c) and
((a mod 10)<>(a div 100))and
((a mod 10)<> ((a mod 100)div 10))and ((a div 100)<> ((a mod 100) div 10))and
((b mod 10)<>(b div 100))and
((b mod 10)<> ((b mod 100)div 10))and ((b div 100)<> ((b mod 100) div 10))and
((c mod 10)<>(c div 100))and
((c mod 10)<> ((c mod 100)div 10))and ((c div 100)<> ((c mod 100) div 10)) then
writeln(a,' ' ,b, ' ',c);
end.
В паскале он не выводит все числа, так что, чтобы проверить, что программа работает, надо сократить до 300 цикл, иначе программа ничего не выводит
Александр Федоткин
Александр Федоткин
283
Лучший ответ
Otabek Suleimenov Выводит!! Только надо много времени ждать. Согласен, что надо уменьшить цикл для проверки программы
976, 967, 764, 746.

UPD: А не, отбой, чота я утром плохо думаю, вот с числами:
http://prntscr.com/64ha8q
SP
Stranger Persia
55 023
Владимир Бондаренко Насколько я понял, то нужно выдать тройки чисел?
Otabek Suleimenov Разве a,b,c - это цифры?
Может a,b,c - это числа (по усл.)
Alex Fresh у чисел должны быть различные цифры.
что-то типа 123 456 789
Alex Fresh не слабая задачка)
var a100,a10,a1,b100,b10,b1,c100,c10,c1: integer;
begin
for a100:=1 to 9 do
for a10:=0 to 9 do
for a1:=0 to 9 do
for b100:=1 to 9 do
for b10:=0 to 9 do
for b1:=0 to 9 do
for c100:=1 to 9 do
for c10:=0 to 9 do
for c1:=0 to 9 do begin
if (a100<>a10) and (a100<>a1) and (a10<>a1) then begin
if (b100<>b10) and (b100<>b1) and (b10<>b1) then begin
if (c100<>c10) and (c100<>c1) and (c10<>c1) then begin
if sqr(a100*100+a10*10+a1)-sqr(b100*100+b10*10+b1)-sqr(c100*100+c10*10+c1)=a100*100+a10*10+a1-b100*100-b10*10-b1-c100*100-c10*10-c1 then begin
write(a100,a10,a1,' ');
write(b100,b10,b1,' ');
write(c100,c10,c1,' ');
write(sqr(a100*100+a10*10+a1)-sqr(b100*100+b10*10+b1)-sqr(c100*100+c10*10+c1),' ');
writeln(a100*100+a10*10+a1-b100*100-b10*10-b1-c100*100-c10*10-c1);
end;
end;
end;
end;
end;
end.

там их дофига
169 102 135
169 135 102
172 103 138
172 138 103
174 105 139
174 139 105
179 108 143
179 143 108
182 109 146....
Dobrinn6877 Неверные у тебя числа
Проверь на калькуляторе сначала
-----------------
309 186 247
309 247 186
627 319 540
627 540 319
719 234 680
719 680 234
839 504 671
839 671 504
952 630 714
952 714 630
-----------------
Паскаля у меня нет, вот на прожка на VBA Excel, можно несложно переделать в pas:
Sub abc()
Dim a, b, c As Long
Dim a1, a2, a3, b1, b2, b3, c1, c2, c3 As Long
Dim ResStr As String
For a1 = 1 To 9
For a2 = 0 To 9
If a2 <> a1 Then
For a3 = 0 To 9
If a3 <> a1 And a3 <> a2 Then
For b1 = 1 To 9
If b1 <> a1 And b1 <> a2 And b1 <> a3 Then
For b2 = 0 To 9
If b2 <> a1 And b2 <> a2 And b2 <> a3 And b2 <> b1 Then
For b3 = 0 To 9
If b3 <> a1 And b3 <> a2 And b3 <> a3 And b3 <> b1 And b3 <> b2 Then
For c1 = 1 To 9
If c1 <> a1 And c1 <> a2 And c1 <> a3 And c1 <> b1 And c1 <> b2 And c1 <> b3 Then
For c2 = 0 To 9
If c2 <> a1 And c2 <> a2 And c2 <> a3 And c2 <> b1 And c2 <> b2 And c2 <> b3 And c2 <> c1 Then
For c3 = 0 To 9
If c3 <> a1 And c3 <> a2 And c3 <> a3 And c3 <> b1 And c3 <> b2 And c3 <> b3 And c3 <> c1 And c3 <> c2 Then
a = a1 * 100 + a2 * 10 + a3
b = b1 * 100 + b2 * 10 + b3
c = c1 * 100 + c2 * 10 + c3
If (a * a - b * b - c * c) = (a - b - c) Then
ResStr = ResStr & CStr(a) & " " & CStr(b) & " " & CStr(c) & Chr(13)
End If
End If
Next c3
End If
Next c2
End If
Next c1
End If
Next b3
End If
Next b2
End If
Next b1
End If
Next a3
End If
Next a2
Next a1
MsgBox (ResStr)
End Sub
Alex Fresh норм, только не хватает отрицательных чисел...
добавятся еще несколько условий...
Сам ищи
Otabek Suleimenov Не нашел, прошу помощи, хотя бы ответ

Похожие вопросы