PascalABC.NET 3.2, сборка 1383 от 09.02.2017 Внимание! Если программа не работает, обновите версию!
Используем "жадный" алгоритм. Он не всегда дает минимальное общее количество купюр, но зато простой в понимании.
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 руб.
// PascalABC.NET 3.2, сборка 1383 от 09.02.2017 // Внимание! Если программа не работает, обновите версию!
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.
использовать Робот
алг
нач
закрасить
вниз
закрасить
вниз
закрасить
вниз
закрасить
вниз
закрасить
вправо
закрасить
вправо
закрасить
вправо
закрасить
вправо
закрасить
вправо
закрасить
вправо
закрасить
вверх
закрасить
вверх
закрасить
вверх
закрасить
вверх
закрасить
влево
влево
вниз
закрасить
вниз
закрасить
влево
закрасить
влево
закрасить
вверх
закрасить
кон
Объяснение:
картинка