Дерево игры - в прилагаемом файле. У игрока, делающего ход первым (Пети) есть выигрышная стратегия: первый ход должен быть +3 (в куче получится 13 камней). В этом случае при ходе второго игрока (Вани) +3 (в куче 16 камней) первый (Петя) выигрывает ходом *2 (в куче 32 камня); при ходе второго игрока (Вани) *2 (в куче 26 камней) первый (Петя) также выигрывает ходом *2 (в куче 52 камня). Второй игрок (Ваня) может выиграть только в случае, если первый (Петя) сделает начальный ход *2 (в куче 20 камней), следующий ход (Вани) *2 (в куче 40 камней) приводит к выигрышу.
#include <iostream>
#include <ctime>
#include <stdlib.h>
using namespace std;
void cher(int ar1[],int ar2[],int& ar3, int n);
int main(void)
{int* ar1,*ar2,*arfin;
int n,a;
cin>>n;
ar1=new int[n];
ar2=new int[n];
arfin=new int[n*2];
cout<<"Random or reading? 1-rand, other-read";
cin>>a;
if (a==1)
{srand(time(NULL));
for(int i=0;i<n;i++)
{ar1[i]=rand()%10;
cout<<ar1[i]<<' ';}
cout<<"\n";
for(int i=0;i<n;i++)
{ar2[i]=rand()%10;
cout<<ar2[i]<<' ';}
cout<<"\n";}
else
{for(int i=0;i<n;i++)
cin>>ar1[i];
for(int i=0;i<n;i++)
cin>>ar2[i];}
cher(ar1,ar2,*arfin,n*2);
for(int i=0;i<n*2;i++)
cout<<arfin[i]<<' ';
delete []ar1;
delete []ar2;
delete []arfin;
return 0;}
void cher(int ar1[],int ar2[],int& ar3, int n)
{int* ar3f=&ar3;
int i1,i2=0;
for(int i=0;i<n;i++)
if(i%2==0)
{ar3f[i]=ar1[i1];
i1++;}
else
{ar3f[i]=ar2[i2]; i2++;}}