博弈什么的真是弱啊。。虽然这题根本用不到博弈的知识。。但看着这类问题就懵逼。
记得sxb是打表找规律过的。。
题解是一个叫做齐肯多夫定理的东西。。可以百度一下qwq
#include<iostream>
#include<cstdio>
using namespace std;
long long n;
int cnt;
long long f[100];
int main()
{
scanf("%lld",&n);
f[cnt]=f[++cnt]=1;
while (f[cnt]<n)
f[++cnt]=f[cnt-1]+f[cnt-2];
if (f[cnt]==n) cout << n << endl;
else
{
while (n)
{
while (f[cnt]>n) cnt--;
if (f[cnt]==n) {cout << n << endl; break;}
n-=f[cnt];
}
}
return 0;
}