Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 

Монеты - 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)

[Обсуждение] [Все попытки] [Задача]


Красноярский краевой Дворец пионеров, (c)2006 - 2025, ИНН 246305493507, E-mail: admin@acmp.ru