4
Объяснение:
Зная, что изначально в куче было S камней, для победы нужно получить не менее 32, рассмотрим все возможные ходы Пети, при которых он не выиграет. Чтобы Петя не выиграл, после любого его хода в куче должно получиться меньше 32 камней.
Действие А) S+1<32, тогда S<32-1=31
Действие Б) 3*S+1<32, тогда S<(32-1)/3=11
А теперь распишем ходы Вани. Чтобы точно победить, Ване нужно действовать так, чтобы получить максимальный результат - из двух действий максимальный дает действие Б. После его хода в куче должно стать или 32 камня, или больше.
Действие А) 3*(S+1)+1=3*S+4>=32, тогда S>=(32-4)/3=10
Действие Б) 3*(3*S+1)+1=9*S+4>=32, тогда S>=(32-4)/9=4
Таким образом мы понимаем, что нужное для Ваниной победы первым ходом число S должно должно лежать в диапазоне от 4 до 31, тогда минимальным подходящим будет 4. Проверим:
Случай 1. Петя ходит действием А. 4+1=5. Ваня ходит действием Б. 5*3+1=16. Ваня не выиграл.
Случай 2. Петя ходит действием Б. 3*4+1=13. Ваня ходит действием Б. 13*3=39. Ваня выиграл.
Несмотря на то, что если Петя пойдет действием А, Ваня не выиграет, его победа всё равно возможна, если тот пойдет действием Б. А нас именно о случае, когда она возможна, и спрашивают.
Чтобы убедиться в верности рассуждений, проверим, нельзя ли взять еще меньшее число - 3:
Случай 1. Петя ходит действием А. 3+1=4. Ваня ходит действием Б. 3*4+1=13. Ваня не выиграл.
Случай 2. Петя ходит действием Б. 3*3+1=10. Ваня ходит действием Б. 3+10+1=31. Ваня не выиграл.
Таким образом, мы выяснили, что минимальным начальным количеством камней, когда возможна победа Вани первым ходом, является 4.
1)#include <iostream>
using namespace std;
int main() {
int a=1,b=1,c=0,d=1;
int otvet=a*(-1)+b^c-d;
cout<<otvet;
}
2)#include <iostream>
using namespace std;
int main() {
int a = 1, b = 1, c = 1, d = 1;
int otvet=a*(-1)+b^c-d;
cout<<otvet;
}
3)#include <iostream>
using namespace std;
int main() {
int a = 0, b = 0, c = 0, d = 0;
int otvet=a*(-1)+b^c-d;
cout<<otvet;
}
4)#include <iostream>
using namespace std;
int main() {
int a = 0, b = 1, c = 1, d = 0;
int otvet=-(a+b^c+(-b))+a^d;
cout<<otvet;
}
5)#include <iostream>
using namespace std;
int main() {
int a = 1, b = 0, c = 0, d = 1;
int otvet=-(a+b^c+(-b))+a^d;
cout<<otvet;
}
6)#include <iostream>
using namespace std;
int main() {
int a = 1, b = 1, c = 1, d = 1;
int otvet=-(a+b^c+(-b))+a^d;
cout<<otvet;
}
7)#include <iostream>
using namespace std;
int main() {
int a = 0, b = 0, c = 0, d = 0;
int otvet=-(a+b^c+(-b))+a^d;
cout<<otvet;
}
Объяснение: