С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
vlados124
1 / 1 / 0
Регистрация: 13.09.2018
Сообщений: 113
1

Определить минимальное количество купюр, необходимое для покупки

18.09.2018, 22:42. Просмотров 218. Ответов 14
Метки нет (Все метки)

Часто граждане пытаются выяснить, насколько богатыми являются депутаты. Некоторые верят, что материальное положение отдельных депутатов являются неограниченными.
Поэтому представьте себе депутата, у которого есть неограниченное количество купюр всех номиналов (1, 2, 5, 10, 20, 50, 100, 200, 500 рублей). Он хочет приобрести подарок для своей тещи, что стоит N рублей. Несмотря на то, что наш герой бесконечно богат, он также является и бесконечно скупым. Именно поэтому он хочет оплатить покупку наличными без остатка. Какое минимальное количество купюр ему для этого понадобится?

Входные данные
Целое число N

Выходные данные
Минимальное количество купюр, необходимой для покупки

Ограничения
1 ≤ N ≤ 109

Пример
Входные данные
74
Выходные данные
4
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2018, 22:42
Ответы с готовыми решениями:

Определить количество 5,20 и 50 копеечных монет, необходимое для набора суммы 4 рубля
Определить количество 5, 20 и 50 копеечных монет, необходимое для набора суммы 4 рубля. При...

Найти минимальное число монет достоинством в 50, 10, 5, и 1 копейку, необходимое для представения некоторой суммы
Найти минимальное число монет достоинством в 50, 10, 5, и 1 копейку, необходимое для представения...

Определить минимальное количество членов последовательности, для которых выполняется условие
Числовая последовательность задана формулой xi=(i^2)/ i! i=1,2,.... Определить...

Определить минимальное количество операций необходимо для того, чтобы сделать число a равным числу b
Помогите пож-ста срочно

Определите количество теплоты необходимое для нагревания жидкости
Помогите пожалуйста решить задачку на паскале: Определите количество теплоты необходимое для...

14
Puporev
19.09.2018, 08:44
  #2

Не по теме:

Цитата Сообщение от vlados124 Посмотреть сообщение
наш герой бесконечно богат, он также является и бесконечно скупым.
Типа Порошенко...

0
vlados124
1 / 1 / 0
Регистрация: 13.09.2018
Сообщений: 113
19.09.2018, 14:35  [ТС] 3
Напишите пж))
0
bormant
19.09.2018, 16:45
  #4

Не по теме:


Зачем?

Предметная олимпиада — состязание учащихся учреждений среднего общего, высшего или профессионального образования, требующее от участников демонстрации знаний и навыков в области одной или нескольких изучаемых дисциплин.
Участник олимпиады обычно усиленно готовится к ней, что способствует усвоению учебного и дополнительного материала.

0
Constantin Cat
19.09.2018, 19:52
  #5

Не по теме:

Цитата Сообщение от vlados124 Посмотреть сообщение
Поэтому представьте себе депутата,
Лучше
Цитата Сообщение от vlados124 Посмотреть сообщение
1, 2, 5
Сейчас их сделали, их железными, пусть качаются.
:)

0
Cyborg Drone
Модератор
5479 / 3296 / 2482
Регистрация: 17.08.2012
Сообщений: 10,586
20.09.2018, 02:18 6
Да отчего же не написать? Знания за чужой счёт жить не помогают...

Один из вариантов решения для "олимпийского" сайта:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const
  k: longint = 0;
  q: longint = 10;
  d: longint = 100;
 
var
  n, p, i: longint;
 
begin
  readln(n);
  repeat
    for i := 1 to 3 do
      begin
        p := q shr i * d;
        inc(k, n div p);
        n := n mod p
      end;
    d := d div 10
  until d = 0;
  writeln(k)
end.
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
4150 / 2744 / 2173
Регистрация: 22.11.2013
Сообщений: 7,667
20.09.2018, 08:44 7
Cyborg Drone,
купюрный ряд (а это всё, кроме строк 2, 10, 15, 16, 20) отлично получился
0
vlados124
1 / 1 / 0
Регистрация: 13.09.2018
Сообщений: 113
20.09.2018, 14:57  [ТС] 8
Паскаль выдает ошибку, связаной с делением на ноль
0
D1973
Модератор
3670 / 2646 / 1289
Регистрация: 21.01.2014
Сообщений: 11,220
Записей в блоге: 3
Завершенные тесты: 1
21.09.2018, 09:02 9
Цитата Сообщение от vlados124 Посмотреть сообщение
купюр всех номиналов (1, 2, 5, 10, 20, 50, 100, 200, 500 рублей)
Задача-то из прошлого века... В 1991 - 1992 г. были купюры таких номиналов

Добавлено через 1 час 33 минуты
Cyborg Drone, странное решение...
сначала const k: longint = 0;
и далее: inc(k, n div p);
Это как это так: значение константы менять?
Другое дело, если k, q, d под var объявить...
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
4150 / 2744 / 2173
Регистрация: 22.11.2013
Сообщений: 7,667
21.09.2018, 09:10 10
D1973,
ничего странного, раздел называется Turbo Pascal, в его синтаксисе инициализированные переменные выглядят именно так, с const (типизированные константы назывались они), см. Turbo Pascal и инициализированные переменные
Синтаксис с возможностью инициализации в разделе var появился намного позже не только выхода, но и завершения поддержки последнего из линейки Turbo Pascal.
0
D1973
Модератор
3670 / 2646 / 1289
Регистрация: 21.01.2014
Сообщений: 11,220
Записей в блоге: 3
Завершенные тесты: 1
21.09.2018, 09:13 11
Другой вариант...
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
const A: array[1..9] of integer = (1, 2, 5, 10, 20, 50, 100, 200, 500);
var Rez: array[1..9] of integer;
    Count, Summ, i: integer;
    s1, s2: String;
 
begin
 Write('Введите сумму: ');
 Readln(Summ);
 Count := 0;
 for i := 1 to 9 do
  Rez[i] := 0;
 for i := 9 downto 1 do
  if Summ div A[i] > 0 then 
   begin
     inc(Rez[i], Summ div A[i]);
     inc(Count, Summ div A[i]);
     Summ := Summ - A[i] * (Summ div A[i]);
   end;  
 s1 := '';
 s2 := '';
 for i := 1 to 9 do
  begin
   s1 := s1 + IntToStr(A[i]) + #9;   
   s2 := s2 + IntToStr(Rez[i]) + #9;
  end;
 writeln(s1);
 writeln(s2);
 writeln('Количество купюр - ', Count);
end.


Добавлено через 1 минуту
Цитата Сообщение от bormant Посмотреть сообщение
типизированные константы назывались они
Забыл про это наглухо... Виноват-с...
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
4150 / 2744 / 2173
Регистрация: 22.11.2013
Сообщений: 7,667
21.09.2018, 11:34 12
D1973,
раздел называется Turbo Pascal:
- вы забыли приложить реализацию функции IntToStr() ;-)
- 10-11, 19-20: глобальныя переменныя Rez, s1, s2 уже инициализированы нулями/пустыми строками, повторная инициализация теми же значениями ни к чему ;-) (но это на самом деле просто придирки ).
- Integer -- он тут 16-разрядный, нет смысла так ограничивать допустимую сумму, когда 32-разряда (Longint) почти ничего не стоят.
- деление штука дорогая (было раньше, хотя нет, раньше оно было очень дорогим), а тут их аж 4 штуки одинаковых.
Кругом по коду "магические числа" (1, 9) -- нехорошо, неуниверсально, неаккуратно -- сопровождение такого кода требует большого внимания и провоцирует ошибки.

Зачем делать плохо, когда можно делать хорошо за ровно ту же цену?

Добавлено через 22 минуты
Попробуем избавиться от недостатков:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const
  Nom: array [1..9] of Integer = (1, 2, 5, 10, 20, 50, 100, 200, 500);
var
  Res: array [Low(Nom)..High(Nom)] of Longint;
  Cnt, Sum: Longint;
  i: Integer;
begin
  Write('Введите сумму: '); ReadLn(Sum);
  for i:=High(Nom) downto Low(Nom) do begin
    Res[i]:=Sum div Nom[i];
    if Res[i]>0 then begin
      Inc(Cnt,Res[i]);
      Dec(Sum,Res[i]*Nom[i]);
    end;
  end;
  WriteLn(Cnt,' купюр всего');
  WriteLn('По номиналам:');
  Write(Nom[Low(Nom)]); for i:=Low(Nom)+1 to High(Nom) do Write(#9,Nom[i]); WriteLn;
  Write(Res[Low(Res)]); for i:=Low(Res)+1 to High(Res) do Write(#9,Res[i]); WriteLn;
end.
1
D1973
Модератор
3670 / 2646 / 1289
Регистрация: 21.01.2014
Сообщений: 11,220
Записей в блоге: 3
Завершенные тесты: 1
21.09.2018, 11:43 13

Не по теме:

Ох, беда-беда... Вот не хочется все это вспоминать, а ведь придется: детеныш в школе начал изучение Turbo Pascal... Придется соответствовать подрастающему поколению... Вот залез посмотреть-попрактиковаться... Осталось TP7 найти-поставить...


bormant, спасибо!
0
bormant
21.09.2018, 11:46
  #14

Не по теме:

Цитата Сообщение от D1973 Посмотреть сообщение
найти
Есть такая тема ;) Скачать Паскаль

0
D1973
Модератор
3670 / 2646 / 1289
Регистрация: 21.01.2014
Сообщений: 11,220
Записей в блоге: 3
Завершенные тесты: 1
21.09.2018, 17:18 15
Ага, я ее видел... Я тут просто еще не определился, то ли через DOS-Box работать (пробовал с C++ 3.0 - не очень понравилось...), то ли виртуалку поднимать Win98... Сейчас как-то в эту сторону больше смотрю...

Не по теме:

А вообще - надо в школе узнать, как они там работают, чтобы моя школота в ступор не впала, увидев нечто, отличное от того, к чему дома привыкли...

0
21.09.2018, 17:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2018, 17:18

Найдите наименьшее количество раундов, необходимое для балансировки системы
Текст Задачи Процессоры многопроцессорной системы соединены в цепь последовательно, один за одним....

Определить так же число итераций необходимое для нахождения корня
методом итераций вычислить корень уравнения вида f(x)=0 расположеннный на интервале с абсолютной...

Написать программу, вычис*ляющую количество купюр разного достоинства необходимых для уплаты задолженности по кредиту
Написать программу, вычис*ляющую количество купюр разного достоинства необходимых для уплаты...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru