Получив на вход число x, приведённая ниже программа выводит два числа — m и n. var x, m, n: integer;
begin
readln (x);
m:=0;
n:=0;
while x>0 do
begin
if n
m:=m+1;
x:=x div 10;
end;
writeln (m);
write (n)
end.
Известно, что при некотором значении x были выведены числа 3 и 7.
Укажите наибольшее и наименьшее из таких чисел x. В ответе запишите сначала наименьшее число, затем, без пробелов запятых или других дополнительных символов, наибольшее число
Внимание! Если программа не работает, обновите версию!
Используем "жадный" алгоритм. Он не всегда дает минимальное общее количество купюр, но зато простой в понимании.
begin
var k:=Arr(500,100,50,10,5,2,1); // массив с достоинствами купюр
var s:=ReadInteger('Введите сумму:'); // сумма к оплате
Writeln('Уплатить:');
var i:=0;
while s>0 do begin
var p:=s div k[i];
if p>0 then Writeln(p,' шт. достоинством ',k[i],' руб.');
s:=s mod k[i]; i+=1
end;
end.
Примеры
Введите сумму: 3794
Уплатить:
7 шт. достоинством 500 руб.
2 шт. достоинством 100 руб.
1 шт. достоинством 50 руб.
4 шт. достоинством 10 руб.
2 шт. достоинством 2 руб.
Введите сумму: 507
Уплатить:
1 шт. достоинством 500 руб.
1 шт. достоинством 5 руб.
1 шт. достоинством 2 руб.
// Внимание! Если программа не работает, обновите версию!
1)
begin
var b:=ArrRandom(ReadInteger('n='),-99,99); b.Println;
var jn:=b.FindIndex(x->x<0); // индекс первого отрицательного
var jm:=b.IndexMax; // индекс первого максимального
Swap(b[jn],b[jm]); b.Println
end.
Пример
n= 15
33 60 -72 13 -15 -36 21 98 -21 -22 56 -20 0 -98 28
33 60 98 13 -15 -36 21 -72 -21 -22 56 -20 0 -98 28
2)
begin
var a:=ArrRandom(ReadInteger('n='),-99,99); a.Println;
a:=a[:4]+Arr(8)+a[4:]; a.Println;
end.
Пример
n= 10
65 56 31 74 -4 -54 43 8 -58 -94
65 56 31 74 8 -4 -54 43 8 -58 -94