Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 13.09.2018
Сообщений: 126
1

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

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

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

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

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

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

Пример
Входные данные
74
Выходные данные
4
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.09.2018, 22:42
Ответы с готовыми решениями:

Найти минимальное количество купюр для оплаты суммы
Я саму программу написал, да вот во время выполнения, в консоли, после ввода мною переменной summa,...

Зная стартовый капитал и месячный процент прироста, рассчитать необходимое количество лет для покупки магазина
Коммерсант, имея стартовый капитал n рублей, занялся торговлей, которая увеличивает капитал на p%...

Найти минимальное количество операций, необходимое для возведения k в степень n
Кто-нибудь, перепишете на с++ пожалуйста var N, i, k, count, m: byte; begin ...

Минимальное количество топлива, необходимое для дозаправки самолету в пункте В, чтобы долететь из пункта А в пункт С
Вот сама задача... Грузовой самолет должен пролететь с грузом из пункта А в пункт С через пункт В....

14
Puporev
19.09.2018, 08:44
  #2

Не по теме:

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

0
1 / 1 / 0
Регистрация: 13.09.2018
Сообщений: 126
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
Модератор
9874 / 5242 / 3306
Регистрация: 17.08.2012
Сообщений: 16,012
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
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
20.09.2018, 08:44 7
Cyborg Drone,
купюрный ряд (а это всё, кроме строк 2, 10, 15, 16, 20) отлично получился
0
1 / 1 / 0
Регистрация: 13.09.2018
Сообщений: 126
20.09.2018, 14:57  [ТС] 8
Паскаль выдает ошибку, связаной с делением на ноль
0
Модератор
9270 / 6048 / 2380
Регистрация: 21.01.2014
Сообщений: 25,828
Записей в блоге: 3
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
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
21.09.2018, 09:10 10
D1973,
ничего странного, раздел называется Turbo Pascal, в его синтаксисе инициализированные переменные выглядят именно так, с const (типизированные константы назывались они), см. Turbo Pascal и инициализированные переменные
Синтаксис с возможностью инициализации в разделе var появился намного позже не только выхода, но и завершения поддержки последнего из линейки Turbo Pascal.
0
Модератор
9270 / 6048 / 2380
Регистрация: 21.01.2014
Сообщений: 25,828
Записей в блоге: 3
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
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
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
Модератор
9270 / 6048 / 2380
Регистрация: 21.01.2014
Сообщений: 25,828
Записей в блоге: 3
21.09.2018, 11:43 13

Не по теме:

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


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

Не по теме:

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

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

Не по теме:

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

0
21.09.2018, 17:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2018, 17:18
Помогаю со студенческими работами здесь

Как определить минимальное необходимое время для отработки запускаемого bat файла функцией ShellExecute()?
Всем привет! Столкнулся недавно с интересной проблемой. Есть код на Delphi7: // запускаем...

Программа должна выдавать сколько купюр каждого номинала потребуется для размена, при условии, что количество купюр каждого вида ограничено
Здравствуйте, у меня в задаче пользователь вводит количество денег в грн, имеется массив денег,...

Определить количество теплоты, необходимое для нагревания 10г ртути.
Определить количество теплоты, необходимое для нагревания 10г ртути на дельта t=30*С. Удельная...

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru