Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2016, 13:04   #1
Злое Аниме
 
Регистрация: 27.01.2016
Сообщений: 5
По умолчанию задача для Школьной олимпиады - сколько монеток должно быть в кофемате в Ужляндии

Помогите)

Фирма bookface, которая создана в Ужляндії, в которой работает Степан, решила установить в своих офисах автоматы по продаже чая и кофе, чтобы программисты во время перерыва могли с толком провести время.
Стоимость стакана чая и кофе в автомате предполагается установить равной пяти ужикам (такая в Ужляндії валюта). Автоматы будут принимать монеты по 5 и 10 ужиків, а также купюры в 10, 50 и 100 ужиків. Когда программисту нужно выдавать сдачу (то есть когда программист бросил в автомат монету в 10 ужиків, или купюру в 10, 50 или 100ужиків), автомат выдает сдачу монетами в пять ужиків; если же пассажир бросил в автомат монету в пять ужиків, то автомат ее сохраняет и может использовать для сдачи следующим программистам.
Очевидно, что, чтобы обеспечить возможность выдачи сдачи всем ппрограмістам, может понадобиться сначала загрузить в автомат некоторое количество монет в пять ужиків. Сейчас в офисах фирмы проходят испытания с целью определить минимальное количество монет, которые надо загрузить в автомат перед рабочим днем.
Вам дан протокол одного из таких испытаний: известен порядок, в котором программисты оплачивали свои покупки различными монетами и купюрами. Определите, какое минимальное количество монет в пять ужиків, должно было изначально находиться в автомате, чтобы всем пассажирам хватило сдачи.
Входные данные:
В первой строке входного файла находится одно натуральное число N - количество покупок в автомате, которые были совершены в ходе испытания (1 ≤ N ≤ 50 000). Во второй строке находятся N натуральных чисел, каждое из которых ровно номинала монеты или купюры, которую использовал очередной программист для оплаты; каждый номинал может принимать одно из четырех значений: 5, 10, 50 или 100.

Исходные данные:
В выходной файл выведите одно число - минимальное количество монет в пять ужиків, которые надо было загрузить в автомат изначально, чтобы всем программистам хватило сдачи.

Примечание:
В первом примере одна монета в пять ужиків потребуется для сдачи первому программисту и 19 монет - третьему, но при сдаче третьему можно использовать ту монету, которую бросит второй программист, поэтому изначально в автомате достаточно 19 монет.
Во втором примере сдачу третьем программисту можно выдать, используя монету первого или второго покупателя, и поэтому не нужно загружать монеты в автомат изначально.
В третьем примере першоve программисту нужны девять монет сдачи, и все они должны изначально находится в автомате.

Последний раз редактировалось Вадим Мошев; 27.01.2016 в 15:04. Причина: Изменил украинский на русский
Злое Аниме вне форума Ответить с цитированием
Старый 27.01.2016, 15:56   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

На примере массива с данными. Замени массив на данные из файла
Код:
const n = 3;
      m: array[1..n] Of Byte = (5,5,10);
var i,j,xCount,xNow: Integer;
begin
  xCount:=0; xNow:=0;
  for i:=1 to n do begin
    j:=m[i] div 5 - 1;
    if j=0 then Inc(xNow)
    else begin
      Dec(xNow,j);
      if xNow<0 then begin
        Dec(xCount,xNow);
        xNow:=0;
      end;
    end;
  end;
  //В xCount результат
....
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.01.2016, 18:26   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

какая странная задача...
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 27.01.2016, 19:09   #4
Злое Аниме
 
Регистрация: 27.01.2016
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
На примере массива с данными. Замени массив на данные из файла
Код:
const n = 3;
      m: array[1..n] Of Byte = (5,5,10);
var i,j,xCount,xNow: Integer;
begin
  xCount:=0; xNow:=0;
  for i:=1 to n do begin
    j:=m[i] div 5 - 1;
    if j=0 then Inc(xNow)
    else begin
      Dec(xNow,j);
      if xNow<0 then begin
        Dec(xCount,xNow);
        xNow:=0;
      end;
    end;
  end;
  //В xCount результат
....
Спасибо!
Злое Аниме вне форума Ответить с цитированием
Старый 29.01.2016, 16:06   #5
Злое Аниме
 
Регистрация: 27.01.2016
Сообщений: 5
По умолчанию

Что-то здесь неправельно
Код:
const n = 3;
      m: array[1..n] Of Byte = (5,5,10);
var i,j,xCount,xNow: Integer;
begin
  xCount:=0; xNow:=0;
  for i:=1 to n do begin
    j:=m[i] div 5 - 1;
    if j=0 then Inc(xNow)
    else begin
      Dec(xNow,j);
      if xNow<0 then begin
        Dec(xCount,xNow);
        xNow:=0;
      end;
    end;
  end;
  //В xCount результат
....


_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 29.01.2016 в 16:08.
Злое Аниме вне форума Ответить с цитированием
Старый 29.01.2016, 16:07   #6
Злое Аниме
 
Регистрация: 27.01.2016
Сообщений: 5
По умолчанию

помогите От начала до конца))
Злое Аниме вне форума Ответить с цитированием
Старый 29.01.2016, 16:24   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Дык если не можешь вместо массива файл использовать, да еще от начала до конца, то зачем тебе вообще олимпиадная задача?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 29.01.2016, 17:17   #8
Злое Аниме
 
Регистрация: 27.01.2016
Сообщений: 5
Радость

Цитата:
Сообщение от Аватар Посмотреть сообщение
Дык если не можешь вместо массива файл использовать, да еще от начала до конца, то зачем тебе вообще олимпиадная задача?
Я сделал сам задачу ток в Delphi
Злое Аниме вне форума Ответить с цитированием
Старый 29.01.2016, 17:40   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Злое Аниме Посмотреть сообщение
Я сделал сам задачу ток в Delphi
то, что сам сделал - это, конечно, молодец!

Если не секрет, а чем решение Аватара не устроило?
Хороший, достаточно простой и рабочий код на Паскале.
Его можно в любой Паскаль вставить, хоть во FPC, хоть в Turbo, хоть в Delphi, оно будет работать.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.01.2016, 23:39   #10
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
а чем решение Аватара не устроило?
халявщики, сэр (с)
Alar, верни репу!
Naive вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача из школьной олимпиады.Решение не проходит один из тестов. Че Гевара Общие вопросы C/C++ 2 03.10.2013 14:17
Пишу прогу для выявления потенциально опасного ПО. Как вы думаете что в ней должно быть? Ice_Han Помощь студентам 2 23.01.2012 19:58
Жюри олимпиады для подтверждения итогов должно выделить трех победителей в индивидуальном зачете из 24 участников и опре Botan747 Паскаль, Turbo Pascal, PascalABC.NET 2 16.06.2011 22:33
ПО для управления строительной компанией: каким оно должно быть Softsergey Софт 5 20.11.2009 12:52
TStringGrid - изначально мы видим одну ячейку в конце должно быть столько сколько заполнили. Ensoph Компоненты Delphi 5 18.10.2007 22:24