IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Помогите пожайлуста с задачей "Игра"
TroFF
сообщение 16.12.2007 19:06
Сообщение #1





Группа: Пользователи
Сообщений: 2
Пол: Мужской

Репутация: -  0  +


Всем привет) Вот задачка...не могу решить и все((( Надеюсь на вашу помощь... просьба писать сразу в виде программы))

Двое играют в такую игру: первый записывает натуральное число от 2 до 9;второй умножает его на произвольное натуральное число от 2 до 9;затем первый умножает результат на любое из чисел от 2 до 9 и так далее. Выигрывает тот, кто первым получит результат равный или больший натурального числа N (N<2000000000). Кто выигрывает при правильной игре - начинающий или его соперник?
Программа должна:
Запросить N ; найти и сообщить кто выигрывает; если выигрывает первый то сообщить все его возможные первые ходы, ведущие к выигрышу.
Пример 1: Исходные данные: 16 Ответ: Выигрывает второй.
Пример 2: Исходные данные: 28 Ответ: Выигрывает первый. Выигрывающий ход: 2 или 3.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 5)
TroFF
сообщение 16.12.2007 21:50
Сообщение #2





Группа: Пользователи
Сообщений: 2
Пол: Мужской

Репутация: -  0  +


ну кто нибудь помогите!!!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 16.12.2007 22:47
Сообщение #3


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


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


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lodar'
сообщение 16.12.2007 22:55
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 38
Пол: Мужской

Репутация: -  0  +


Цитата(мисс_граффити @ 16.12.2007 22:47) *

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

там вроде нада делать цикл и выполнять его пока число не равно или больше N, при этом создав счетчик, потом узнать проверить на четность значение этого счетчика и узнаем кто выиграл. А вот ка просчитать выигрышные ходы?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Tan
сообщение 17.12.2007 1:41
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +


Цитата
А вот ка просчитать выигрышные ходы?
То есть ход при котором игра останавливается ? Что тебе мешает после хода каждого игрока проверять образовавшееся число на условие? И судя по всему здесь надо будет работать с длинной арифметикой (по крайней мере 1 из вариантов).


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 17.12.2007 1:44
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


По идее каждый должен руководствоваться правилом - надо выбрать такое максимально возможное число, после умножения на которое, соперник в любом случает не сможет победить. Пример: при N=28, ход = 2 или 3, т.к. 3 * любое [2..9] будет меньше 28, а при ходе = 4 соперник сможет получить больше.
Примерно вот так:
var b,t,h,n:longint;
begin
n:=28; b:=1; t:=1;
repeat
b:=3-b; h:=2;
while (t*(h+1)*9<n) and (h<9) do inc(h);
t:=t*h;
until t*9>=n;
writeln (b,' wins');
if b=1 then
for h:=2 to 9 do if h*9<n then write (h,' ');
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 25.06.2025 2:10
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"