На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение





Сообщение: 1
ссылка на сообщение  Отправлено: 19.01.23 21:03. Заголовок: Задача № 3074 (Е. Джобс)


Помогите, пожалуйста, в 3 пункте. У меня выводится максимальное значение 499, хотя правильное максимальное значение 299.
#include <iostream>
using namespace std;
int F(int s, int hod, int win)
{

if (s >= 1000)
{
return hod % 2 == win % 2;
}
if (hod == win)
{
return 0;
}
if ((hod + 1) % 2 == win % 2)
{
return F(s + 100, hod + 1, win) or F(s*2, hod + 1, win);
}
else
{
return F(s + 100, hod + 1, win) and F(s*2, hod + 1, win);
}

}
int main()
{
for (int s = 1; s <= 999; ++s)
{

for (int win = 1; win <= 4; ++win)
{
if (F(s, 0, win) == 1)
{
if (win == 2)
{
cout << s << " " << win << endl;
}
break;
}
}
}
return 0;
}

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 5 [только новые]







Сообщение: 421
ссылка на сообщение  Отправлено: 21.04.23 14:59. Заголовок: yaroslava пишет: По..


yaroslava пишет:

 цитата:
Помогите, пожалуйста, в 3 пункте. У меня выводится максимальное значение 499, хотя правильное максимальное значение 299.


как-то так:
 
def g ( S ):
if S >= 1000: return 0
pe = [g(S*2), g(S+100)]
va = [c for c in pe if c <= 0]
if va: return -max(va) + 1
else: return -max(pe)

itog = [(S,g(S)) for S in range(1,1000)]
print( '21 max:', max([S for S, R in itog if R == -2]))


Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 27.01.24 06:54. Заголовок: Какая последовательн..


Какая последовательность ходов для позиции 299? Если Петя не ошибается, то он просто +1 будет делать и Ваня не сможет выиграть за 2 хода. Если Петя ошибается, то можно взять вообще ход +1 для всех.

Спасибо: 0 
Цитата Ответить





Сообщение: 233
ссылка на сообщение  Отправлено: 27.01.24 16:42. Заголовок: Победа Вани первым х..


 
Победа Вани первым ходом при ошибке Пети возможна, если в куче было не менее 250 камней, но не более 499 камней
299 --> 598 --> 1196 (победа Вани первым ходом при ошибке Пети)
п в п в
299 --> 399 --> 499 --> 988 --> 1976 (победа Вани вторым ходом)
п в п в
299 --> 399 --> 499 --> 599 --> 1198 (победа Вани вторым ходом)
п в в
300 --> 600 --> 1200 (победа Вани первым ходом при ошибке Пети)
п в п
300 --> 400 --> 800 --> 1600 (выиграет Петя)
300 --> 400 --> 500 --> 1000 (выиграет Петя)


Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 28.01.24 12:00. Заголовок: 400 800 (выиграет Пе..



 цитата:
400 800 (выиграет Петя)
500 (выиграет Петя)


А почему выиграет Петя, если он ошибается? Почему он не может ошибиться и сделать ход +100? Почему Петя ошибается на одних диапазонах чисел и перестает ошибаться на других?
899 --> 999 --> победа Вани первым ходом при ошибке Пети.

Спасибо: 0 
Цитата Ответить





Сообщение: 235
ссылка на сообщение  Отправлено: 28.01.24 18:52. Заголовок: Я думаю, условие над..


Я думаю, условие надо понимать так:
Ваня ГАРАНТИРОВАННО выигрывает своим первым или вторым ходом,
при этом для любого найденного значения
у Вани есть возможность выиграть своим первым ходом (в случае ошибки Пети)
И ВТОРЫМ ХОДОМ В ИНЫХ СЛУЧАЯХ
899 --> 999 --> 1998 (Победа Вани первым ходом)
899 --> 1798 (победа Пети первым ходом)
Таким образом, ГАРАНТИРОВАННО выиграть Ваня не может, а ДОЛЖЕН
Это условие :
 цитата:
у Вани есть возможность выиграть своим первым ходом (в случае ошибки Пети)

дано, чтобы отбраковать значения ниже 250 - из них Ваня может выиграть только вторым ходом
100 --> 200 (при любом ходе Пети) --> 400 --> 500/800 --> 1000/1600 (Ваня выигрывает только вторым ходом)

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 119
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет