В интернет и посмотри пропроывоаопл
Const n=10;var a:array[1..n]of integer;i,k:integer;begink:=0;for i:=1 to n do begin read(a[i]);if ((a[i] mod 3=0) and (a[i] mod 5 >0)) then k:=k+1;end;write('таких чисел:',k);end.
Более изящное решение :)
Проблема в строке c:= (b*b*b);
Ты ищешь сумму кубов, а для 4-значных чисел нужно искать сумму 4-х степеней. Нужно проверять число а: если от 100 до 999, то выполняем c:= (b*b*b); а если от 1000 до 9999, то выполняем c:= (b*b*b*b);
Код ниже работает и выдаёт результат:
число Армстронга ==> 153
число Армстронга ==> 370
число Армстронга ==> 371
число Армстронга ==> 407
число Армстронга ==> 1634
число Армстронга ==> 8208
число Армстронга ==> 9474
****************************************************************
var a,b,c,d,a2:integer;
begin
for a:=100 to 9999 do begin
d:=0;
a2:=a;
while (a2 <> 0) do begin
b:= a2 mod 10;
a2:= a2 div 10;
if a<1000 then c:= (b*b*b)
else c:= (b*b*b*b);
d:= d+c;
end;
if (a = d) then writeln('число Армстронга ==> ', a);
end;
end.
Пошагово распишем:
0. 52...12
1. 40...12
2. 28...12
3. 16...12
4. 4...12
5. 4...8
6. 4...4
В итоге исполнителю понадобится 6 шагов, чтобы уравнять количество фишек в кучке.
Ответ: 6.
//Pascal ABC.NET v3.1 сборка 1172
var
n, m: integer;
begin
read(n, m);
repeat
writeln('Текущее значение N:', n, ' ,до m:', m - n);
inc(n);
until n = m;
writeln('Завершено, n=m');
end.
Пример ввода:
12
20
Пример вывода:
Текущее значение N:12 ,до m:8
Текущее значение N:13 ,до m:7
Текущее значение N:14 ,до m:6
Текущее значение N:15 ,до m:5
Текущее значение N:16 ,до m:4
Текущее значение N:17 ,до m:3
Текущее значение N:18 ,до m:2
Текущее значение N:19 ,до m:1
Завершено, n=m