Олимпиады по информатике (ХМАО - Югра)

   
 
Югорский НИИ ИТ, Югорский ФМЛ
Логин:   Пароль:    
 
   
 
Новости
О проекте
Регистрация
Гостевая книга
Форум
Архив задач
Состояние системы
Олимпиады
Работа в системе
Рейтинг
Новичкам
Методическое пособие
Дистанционное обучение
Дистрибутивы
Ссылки

















Монеты - 2

(Время: 1 сек. Память: 16 Мб Сложность: 26%)

Посчитаем количество монет, которые взял волшебник. Это значение равно 1+2+3+...+(n-2)+(n-1)=(1+n-1)*(n-1)/2=n*(n-1)/2. Здесь мы использовали формулу суммы элементов арифметической прогрессии: s = (a1+an)*n/2, где a1 и an - первый и последний элементы прогрессии, а n - количество элементов. Поскольку все нефальшивые монеты весят w граммов, то в том случае, когда фальшивых монет нет, общий вес составил бы w*n*(n-1)/2 граммов. Отнимем теперь от этого веса значение p суммарного веса монет, которые взял волшебник. Тогда у нас получится значение k=w*n*(n-1)/2-p. Если это значение равно нулю, то среди отобранных монет нет фальшивых (т.е. фальшивые в n-й корзине), в противном случае мы получим положительное число, превосходящее в d раз количество фальшивых монет среди отобранных. Мы знаем, что количество фальшивых монет равно номеру корзины с фальшивыми монетами, поэтому этот номер равен k/d, что и требовалось определить.

Алгоритм, реализующий вышеизложенные идеи, можно представить следующим образом:

  read(n,w,d,p)
  k = w*n*(n-1)/2-p
  if(k>0) write(k/d) else write(n)

[Все попытки] [Задача]


 
     
Югорский НИИ ИТ, Югорский ФМЛ