Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: задача на паскале  (Прочитано 987 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн tеma

  • Автор темы
  • Активист
  • *
  • Сообщений: 306
    • Просмотр профиля
задача на паскале
« : 21 Января 2012, 18:08:24 »
На олимпиаде попалась задача и я не смог её решить. Я программирую на паскале. Вот задача: Вася и Петя придумали новую игру. Они написали на n карточках числа, и сложили эти карточки в мешок. Суть игры заключается в следующем: мальчики по очереди достают карточки и называют арифметическую прогрессию (1<d), для которой подходят эта, и вытянутые до этого карточки. Если мальсик не может назвать прогрессию или если в мешке нет больше карточек, то он приогрывает. Например, в мешке есть 4 карточки: 2,3,5 и 7. Петя начинает. Он выбирает карточку с цифрой 3 и называет d равное 3, затем ходит Вася, он вабирает карточку с цифрой 5 и называет d равное 2, затем Петя выбирает карточку с цифрой 7 и называет d равное 2 и Вася проигрывает. Довольно скоро Петя заметил, что если он ходит первым, то он может выйграть в любом случае, если начнёт ход с определённой карточки. Во входном файле в первой строке записанно число n, а в следующей n чисел, обозначающих числа на карточке. В выходной файл в первую строку вывести количество первых ходов, которые при правильной игре приведут к выигрышу того, кто ходит первым. Например:
Входные данные:
4
2 3 5 7
Выходные данные:1
3


Входные данные:2
1 3
Выходные данные:0

Подскажите, как её решить? Если не трудно приведите код
« Последнее редактирование: 21 Января 2012, 19:14:55 от tеma »

andrey_p

  • Гость
Re: задача на паскале
« Ответ #1 : 21 Января 2012, 19:01:29 »
Лучше не спрашивать решения по задачам, если нет точного текста задачи. Я три раза перечитал, но не понял. Каким условиям подчиняются числа, записываемые на карточки - произвольные положительные целые? n >= 1? Что такое арифметическая прогрессия 1 < d? Что такое вообще d - номер на вытянутой карточке? Можно выбирать два раза одну карточку - оба вытянули с 5? Почему в тексте требуется в выводе одно число, а в примерах их два? Причем два только в первом...
 ???

Оффлайн solint

  • Активист
  • *
  • Сообщений: 673
    • Просмотр профиля
Re: задача на паскале
« Ответ #2 : 21 Января 2012, 19:03:57 »
Нифига не ясно из постановки задачи.
Цитировать
Арифмети́ческая прогре́ссия — числовая последовательность вида

    a_1,\ a_1+d,\ a_1+2d,\ \ldots,\ a_1+(n-1)d, \ \ldots,

то есть последовательность чисел (членов прогрессии), каждое из которых, начиная со второго, получается из предыдущего добавлением к нему постоянного числа d (шага или разности прогрессии):
Из вики.
Цитировать
Например, в мешке есть 4 карточки: 2,3,5 и 7. Петя начинает. Он выбирает карточку с цифрой 3 и называет d равное 3, затем ходит Вася, он вабирает карточку с цифрой 5 и называет d равное 2, затем Петя выбирает карточку с цифрой 5 и называет d равное 2 и Вася проигрывает
Почему после карточки 3 d = 3? Почему не 7 или 15? Почему можно 2-ды вытащить карточку 5? Или они не убывают? Возвращаются в мешок?

Оффлайн tеma

  • Автор темы
  • Активист
  • *
  • Сообщений: 306
    • Просмотр профиля
Re: задача на паскале
« Ответ #3 : 21 Января 2012, 19:14:36 »
  solint, это опечатка -- во второй раз цифра 7. Исправлю в оригинале. После первой карточки число прогрессии значение не имеет, то есть d могло быть равно и 7 и 8 и 9 и так далее.

Оффлайн solint

  • Активист
  • *
  • Сообщений: 673
    • Просмотр профиля
Re: задача на паскале
« Ответ #4 : 21 Января 2012, 19:20:37 »
Все одно не ясно. Прогрессия как либо привязана к имеющимся цифрам? Иначе это просто бред.
Имеем - 2,3,5 и 7 Выбор - 3 d=3 т.е. далее 6, 9, и т.д. Ни одной из этих цифр в мешке нет. В чем задача? Если поставить оппонента в тупик то просто указать d таким чтобы в сумме со своим числом не получить то что есть (осталось) в мешке.

Оффлайн tеma

  • Автор темы
  • Активист
  • *
  • Сообщений: 306
    • Просмотр профиля
Re: задача на паскале
« Ответ #5 : 21 Января 2012, 19:33:47 »
нет, прогрессия не постаянна. Один после своего хода может указать одну прогрессию, другой -- другую. Лишь бы все числа вытянутые до этого соответствовали прогрессии. Например, полсе хода Пети были вытянуты цифры 4 8 16. Петя может назвать прогрессию 4. Если Вася достанет 18 он может назвать прогрессию 2. Прогрессия не может быть равна 1, и всё.

Оффлайн solint

  • Активист
  • *
  • Сообщений: 673
    • Просмотр профиля
Re: задача на паскале
« Ответ #6 : 21 Января 2012, 19:48:15 »
Тогда исходя из определения прогрессии и озвученных условий и Вася и Петя в равных условиях. Проиграет тот кто  начнет игру при нечетном количестве карточек.
Или расшифруйте это -
Цитировать
нет, прогрессия не постаянна. Один после своего хода может указать одну прогрессию, другой -- другую. Лишь бы все числа вытянутые до этого соответствовали прогрессии. Например, полсе хода Пети были вытянуты цифры 4 8 16. Петя может назвать прогрессию 4. Если Вася достанет 18 он может назвать прогрессию 2. Прогрессия не может быть равна 1, и всё.

Оффлайн tеma

  • Автор темы
  • Активист
  • *
  • Сообщений: 306
    • Просмотр профиля
Re: задача на паскале
« Ответ #7 : 21 Января 2012, 20:03:27 »
ну это не так. Если вытянуты чиса 2 5, а в мешке осталось число 9, то если Вася вытенет его, то с числами 2 5 и 9 Вася не сможет назвать никакой прогрессии (помните, что прогрессия не может быть равна 1).

 

Страница сгенерирована за 0.032 секунд. Запросов: 25.