Задачу можно решать несколькими способами. Можно просто перебрать все четырехзначные числа и для каждого проверять соблюдение условий. Попробуем сократить перебор, для этого преобразуем второе условие:
аb-cd=а+b+с+d;
10a+b-(10c+d)=a+b+c+d;
9(a-c)=2(c+d);
a-c/(c+d)=2/9
Учитывая первое условие (a, b, с, d − различные цифры), получаем, что a=с+2, d=9-с и 0≤с≤7.
Program Example_52;
Var a, b, с, d: Integer;
Begin
For c:=0 To 7 Do
Begin
a:=c+2; d:=9-c;
For b:=0 To 9 Do
If (b<>c) and (b<>a) and (b<>d)
Then Write(a, b, c, d,' ');
Writeln
End;
End.
Таким образом, мы решили задачу, значительно сократив перебор.
Пример 3
Модифицировать пример 1 так, чтобы в ней вычислялась сумма 11+22+…+nn
Решение
Данная задача отличается от предыдущей тем, что показатель степени очередного слагаемого совпадает со значением ее основания, следовательно, верхняя граница внутреннего цикла (в котором вычисляется очередное слагаемое) определяется значением счетчика внешнего цикла.
Program Example_53;
Var n, у, i, s, m: Integer;
Begin
Writeln('Введите значение n');
Readln(n);
s:=0;
For i:=1 To n Do
Begin
y:=1;
For m:=1 To i Do y:=y*i;
{нахождение степени k числа i}
s:=s+y;
End;
Writeln('Ответ: ',s);
End.
Пример 4
Cтаринная задача. Cколько можно купить быков, коров и телят, если плата за быка − 10 рублей, за корову − 5 рублей, за теленка − полтинник (0,5 рубля) и на 100 рублей надо купить 100 голов скота?