Задание: вводим с клавиатуры целое число N.В некой стране используются купюры в 1,5,10,20,50,100,200,500,1000 чего-то там. Нужно, чтобы на экран выводилось минимальное кол-во требуемых купюр для получения суммы N.
Помогите пожалуйста, а то что-то не доходит до меня. И просьба писать только нормальные ответы, а не по типу: "Погугли","Иди учиться","Я этого не знаю" и всё в таком духе.
Другие языки программирования и технологии
Олимпиадная задача по паскалю
Напишите номиналы купюр посложнее, а то вариант выше правильно работает.
И тогда появится нормальная рекурсия и нормальная "олимпиадная" сложность задачи (по крайней мере, для районной олимпиады) .
А если еще ограничения на вычислительную сложность алгоритма добавить - тогда, может, и не только для районной олимпиады задачка подойдет, тут уже не вдумывался.
PS. Для более сложных номиналов (бещ ограничений на выч. сложность алгоритма) эта задачка, если не ошибаюсь, называется в школе задачей динамического программирования. Впрочем, сводится всё равно к достаточно простой рекурсии. Просто рекурсия - еще та "штучка", пока руку не набьёте, она очень страшно выглядит, а потом - очень просто.
PPS. "Это олимпиадная задача для 9-10 класса. "
Именно с этими номиналами купюр она является олимпиадной? С такими номиналами достаточно просто на каждом шаге вычитать из суммы самый большой номинал, не превышающий сумму. Потому что номиналы так подобраны. Давайте ее усложним, добавим номинал в 400 тугриков, и тогда вариант выше не будет работать для суммы в 800 тугриков. А еще лучше - сделаем их произвольными натуральными, чтобы читались из файла
И тогда появится нормальная рекурсия и нормальная "олимпиадная" сложность задачи (по крайней мере, для районной олимпиады) .
А если еще ограничения на вычислительную сложность алгоритма добавить - тогда, может, и не только для районной олимпиады задачка подойдет, тут уже не вдумывался.
PS. Для более сложных номиналов (бещ ограничений на выч. сложность алгоритма) эта задачка, если не ошибаюсь, называется в школе задачей динамического программирования. Впрочем, сводится всё равно к достаточно простой рекурсии. Просто рекурсия - еще та "штучка", пока руку не набьёте, она очень страшно выглядит, а потом - очень просто.
PPS. "Это олимпиадная задача для 9-10 класса. "
Именно с этими номиналами купюр она является олимпиадной? С такими номиналами достаточно просто на каждом шаге вычитать из суммы самый большой номинал, не превышающий сумму. Потому что номиналы так подобраны. Давайте ее усложним, добавим номинал в 400 тугриков, и тогда вариант выше не будет работать для суммы в 800 тугриков. А еще лучше - сделаем их произвольными натуральными, чтобы читались из файла
Какая-то примитивная слишком задача для олимпиады.
const
nominals : array[9] of integer = (1,5,10,20,50,100,200,500,1000);
var i, n, k:integer;
begin
k:=0;
readln(n);
for i:=High(nominals ) downto Low(nominals) do
begin
k:=k+n div nominals[i];
n:=n mod nominals[i];
end;
writeln(k);
end.
const
nominals : array[9] of integer = (1,5,10,20,50,100,200,500,1000);
var i, n, k:integer;
begin
k:=0;
readln(n);
for i:=High(nominals ) downto Low(nominals) do
begin
k:=k+n div nominals[i];
n:=n mod nominals[i];
end;
writeln(k);
end.
Похожие вопросы
- Pascal. Помогите пожалуйста решить задачу в паскале !
- Олимпиадные задачи по BASIC 4.5 ПОМОГИТЕ !!!
- ПОМОГИТЕ С ЗАДАЧАМИ В ПАСКАЛЕ
- Помогите, пожалуйста с задачей :( Сижу, туплю уже какой день, вообще не соображу - чтокуда. Задача на Паскале
- Решение задач по паскалю
- Помогите до решать задачу на паскале
- Составьте задачу в паскале!!
- Помогите решить задачи по Паскалю
- Задача по Паскалю (1 курс)
- помогите решить задачу на паскале: напечатать "столбиком" значения sin2, sin3, ..sin 20.