#include <iostream>
using namespace std;
int main()
{
int i, j, h;
char n[300];
cin>>n;
h = strlen(n);
j = 0;
for (i=0; i<h; i++)
j = (j * 10 + (n[i] - '0')) % 3;
if (j == 0)
cout<<2<<endl;
else
cout<<1<<endl<<j<<endl;
}
ural 1180. Stone Game (博弈)
首先寫出前幾個局面:
必勝:1,2,4,5,7,8,10,11...
必敗:3,6,9,12,15...
猜想:n = 3*k時必敗
證明:
k = 1時成立.
假設k = m時成立;
當k = m+1時,n =3*k+3
由於所取石子數必須時2的指數,所以n不可能導向一個3的倍數的局面,也就是n取出一定石子必定是必勝局面,所以n是必敗局面,證畢.
注意:n的範圍很大,要用大數取模,用字符串讀入.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.