由于黄金分割,所以
q^x=q^(x-1)+q(x-2)
因此,可以将其视为斐波那契数列中,若干项的和。
可以从高位向低位转移。
若某一位上,两者之差的绝对值大于2,则代表已经计算出结果。
因为
(sun(fib(x)),x∈[1,n] ) ≤ fib(n+1)*2
#include <bits/stdc++.h>
using namespace std;
string s1,s2;
int a[100100],b[100100],vis[100100];
int main()
{
int i,j,tmp,len;
while(cin>>s1>>s2)
{
reverse(s1.begin(),s1.end());
reverse(s2.begin(),s2.end());
len=max(s1.length(),s2.length());
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(i=0;i<s1.length();i++)
a[i]+=s1[i]-'0';
for(i=0;i<s2.length();i++)
a[i]-=s2[i]-'0';
for(i=len;i>=2;i--)
{
if(abs(a[i])>=2)
{
if(a[i]>0)
printf(">\n");
else
printf("<\n");
break;
}
a[i-1]+=a[i];
a[i-2]+=a[i];
a[i]=0;
}
if(i==1)
{
for(i=1;i>=0;i--)
{
if(a[i]>0)
printf(">\n");
if(a[i]<0)
printf("<\n");
if(a[i])
break;
}
if(i==-1)
printf("=\n");
}
}
}