Здравствуйте, [b]Заболотских Татьяна Сергеевна[/b]!В приложении находятся примеры задач.
В первой задаче получается отношение 100. В общем, это и так понятно. Сами судите, для чисел 100, 200, 300, ..., 900 отношение равно 100. Далее любые отношения меньше в несколько раз (101/2=50.5; 201/3=67; 301/4=75.5; ...; 901/10=90.1).
Во второй задаче применен
алгоритм ЕвклидаРеализации алгоритма для разных языков программирования можно найти здесь:
Примеры реализации алгоритма ЕвклидаУдачи!Приложение:
###### Задача №1 ######
program Q145225_1;
var
i, cSum: Integer;
maxDiv, curDiv: real;
maxI: Integer;
begin
{ сумма цифр числа 100 = 1 }
cSum:= 1;
maxDiv:= 100.0; { 100 / 1 }
{ число, для которого соотношение максимальное }
maxI:= 100;
{ перебор чисел }
for i:= 101 to 999 do
begin
{ сумма цифр обычно увеличивается на 1 }
Inc(cSum);
{ если число i кратно 10 }
if ((i mod 10) = 0) then
begin
{ если кратно 100 }
if ((i mod 100) = 0) then
{ уменьшаем сумму на 18 }
Dec(cSum, 18)
else
{ иначе уменьшаем на 9 }
Dec(cSum, 9);
end;
{ здесь можете сделать контроль, если желаете... }
{ WriteLn('i = ', i, '; cSum = ', cSum); }
{ определяем отношение числа i к сумме его цифр }
curDiv:= i/cSum;
{ сравниваем с максимальным отношением }
if (curDiv > maxDiv) then
begin
{ запоминаем новое отношение }
maxI:= i;
maxDiv:= curDiv;
end;
end;
{Вывод результата}
Write('i = ', maxI, '; ');
WriteLn('maxDiv = ', maxDiv);
{Ожидание нажатия пользователем любой кнопки}
WriteLn;
WriteLn('Press any key...');
ReadLn;
end.
###### Задача №2 ######
program Q145225_2;
{ ищем НОД, пользуясь алгоритмом Евклида }
function nod(var a, b: Integer): Integer;
begin
while (a <> 0) and (b <> 0) do
if a >= b then
a:= a mod b
else
b:= b mod a;
nod:= a + b
end;
var
a, b: Integer;
begin
{ Ввод а и б }
write('a = '); ReadLn(a);
write('b = '); ReadLn(b);
{ Вывод результата }
WriteLn('NOD(a, b) = ', nod(a, b));
{Ожидание нажатия пользователем любой кнопки}
WriteLn;
WriteLn('Press any key...');
ReadLn;
end.