【博弈】POJ1067

【博弈】POJ1067

根据题目可以得到An、Bn,且,这两个集合具备两个特点:1、严格上升,2、划分Z

认为An、Bn是Beatty序列。

Beatty定理有:

An=[na]

Bn=[nb]

1/a+1/b=1

对应题目:

An=[na]

Bn=An+n=[na]+n=[na+n]=[n(a+1)]=[nb]

则:1/a+1/(a+1)=1

解得:a=(1+sqrt(5))/2

代码:

#include<iostream>
#include<cmath>
using namespace std;

int main()
{
double arph=(sqrt(5.0)+1.0)/2.0;
int a,b;
while (cin>>a>>b)
{
if (b<a) swap(a,b);
int n=b-a;
int c=floor(n*arph);
if (c==a) cout<<0<<endl;
else cout<<1<<endl;
}
return 0;
}

 

你可能感兴趣的:(【博弈】POJ1067)