Меньше чем 3-х основание СС быть не может. (Сама догадайся почему ;-)
Делим:
23 : 3 = 7 ост. 2 — подходит
23 : 4 = 5 ост. 3 — не подходит
23 : 5 = 4 ост. 3 — не подходит
23 : 6 = 3 ост. 5 — не подходит
23 : 7 = 3 ост. 2 — подходит
23 : 8 = 2 ост. 7 — не подходит
23 : 9 = 2 ост. 5 — не подходит
23 : 10 = 2 ост. 3 — не подходит
23 : 11 = 2 ост. 1 — не подходит
23 : 12 = 1 ост. 11 — не подходит
23 : 13 = 1 ост. 10 — не подходит
23 : 14 = 1 ост. 9 — не подходит
23 : 15 = 1 ост. 8 — не подходит
23 : 16 = 1 ост. 7 — не подходит
23 : 17 = 1 ост. 6 — не подходит
23 : 18 = 1 ост. 5 — не подходит
23 : 19 = 1 ост. 4 — не подходит
23 : 20 = 1 ост. 3 — не подходит
23 : 21 = 1 ост. 2 — подходит
23 : 22 = 1 ост. 1 — не подходит
23 : 23 = 1 ост. 0 — не подходит
Далее для всех СС больше 23 остаток будет 23. Следовательно нет смысла их рассматривать.
Итого: 2, 7 и 21.
"...напечатает сначала 2, потом - 6" -- это значит a=2 и b=6?
про пятеричные записи ничего не понял... :) И ИМХО к чему такие сложности? И для чего нам комп и программа? Я подправил исходную прогу чтобы она выдавала все числа подходящие по условию
var x,a,b: longint;
begin
for var i := 999 DownTo 100 do begin
a := 0;
b := 1;
x := i;
while x>0 do begin
if x mod 2 > 0 then a := a+1 else b := b+(x mod 5);
x := x div 5;
end;
if (a = 2) and (b = 6) then writeln('x = ', i, ' a = ', a, ' b = ',b);
end;
end.
прога проводит расчет для всх трехзначных чисел от 999 до 100
итого мы видим что максимальное подходящее число это 960
при необходимости прогу можно переделать чтобы она находила только максимальное число.
Поделитесь своими знаниями, ответьте на вопрос:
1)написать программу, которая запрашивает массив из n элементов, а затем делит все элементы массива на минимальный элемент. протестировать программу на массивах размерностью 5 и 10 элементов. 2)написать программу, которая запрашивает массив из n элементов и увеличивает все элементы массива на максимальный элемент. протестировать программу на массивах размерностью 8 и 10 элементов.
begin
var n:=ReadInteger('n=');
var a:=ArrRandomReal(n,1,50);
a.Println;
var m:=a.Min;
if m<>0 then
for var i:=0 to n-1 do a[i]/=m;
a.Println
end.
Тестовые решения:
n= 5
15.9562486982701 12.6295463515583 11.5262675264507 24.1544637978796 45.6158542677834
1.38433787534893 1.09571865502651 1 2.09560152429653 3.95755643907304
n= 10
14.0622929614327 16.5069398081428 13.2300360101415 45.449448110745 46.6062807271286 41.3808015088461 21.5502972461052 20.3082026570608 6.33108078377837 25.0892608808769
2.22115203417771 2.60728623941069 2.0896962875659 7.17878189569095 7.36150466545052 6.53613544386811 3.40388915922883 3.20769918290964 1 3.96287170196298
// PascalABC.NET 3.1, сборка 1174 от 22.02.2016
begin
var n:=ReadInteger('n=');
var a:=ArrRandom(n,1,50);
a.Println;
var m:=a.Max;
if m<>0 then
for var i:=0 to n-1 do a[i]+=m;
a.Println
end.
Тестовые решения:
n= 8
37 3 10 29 39 31 40 10
77 43 50 69 79 71 80 50
n= 10
9 47 40 19 20 37 21 39 26 31
56 94 87 66 67 84 68 86 73 78