Составить программу решающую следующую : вы покупаете товар,и у вас имеются купюры номиналом 10,50,100,1000 рублей.наберите необходимую сумму товара в n рублей так,чтобы она состояла из минимального количества купюр
// PascalABC.NET 3.2, сборка 1383 от 09.02.2017 // Внимание! Если программа не работает, обновите версию!
begin var k:=Arr(1000,100,50,10); // массив с достоинствами купюр 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.
Пример Введите сумму: 1630 Уплатить: 1 шт. достоинством 1000 руб. 6 шт. достоинством 100 руб. 3 шт. достоинством 10 руб.
Три символа алфавита могут быть закодированы в системе счисления по основанию 3, т.е. в троичной системе счисления. При этом под первым номером кодируется число 0, которое записано по условию как , т.е. символ F кодируется нулем. Вторым номером кодируется число 1 и его запись по условию N, откуда мы узнаем, что символ N кодируется цифрой 1. Тогда оставшийся символ S кодируется цифрой 2. И действительно, третьей идет комбинация символов S. Любой член в последовательности кодов может быть получен путем перевода в троичную систему числа, на единицу меньшего номеру этого члена (поскольку отсчет кодов идет с нуля, а члены последовательности нумеруются с единицы). Проверим наше построение для контрольного значения n99=NFNSS. 98(3)=10122 -> NFNSS, что соответствует условию. Теперь само решение. 7) 6(3)=00020 -> FFFSF 27) 26(3)=00222 -> FFSSS 90) 89(3)=10022 -> NFFSS 101) 100(3)=10201 -> NFSFN 196) 195(3)=21020 -> SNFSF
Для записи максимального числа необходимо в наибольшем разряде числа записать самую большую цифру,то есть 9,поскольку это палиндром,то и последняя цифра будет 9. 9+9=18,39-18=21-сумма оставшихся пяти цифр.(Если использовать в числе две цифры 7, то сумма оставшихся трех цифр составит 7,а из этих трех цифр две 4 не получится ,а одна не удовлетворяет условие,поскольку на две цифры останется сумма 3.)В этом числе может быть только одна 7,и число выглядит так 9**7**9,а сумма неизвестных четырех цифр-14. среди этих четырех цифр две 4,тогда сумма двух оставшихся цифр-6,то есть это две 3.Осталось только записать это максимальное число. 9437349.Проверим 9+4+3+7+3+4+9=39
// PascalABC.NET 3.2, сборка 1383 от 09.02.2017
// Внимание! Если программа не работает, обновите версию!
begin
var k:=Arr(1000,100,50,10); // массив с достоинствами купюр
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.
Пример
Введите сумму: 1630
Уплатить:
1 шт. достоинством 1000 руб.
6 шт. достоинством 100 руб.
3 шт. достоинством 10 руб.