51 nod 1491 黄金系统
这个题可以找出来规律是q^2=q+1;
然后可以把小的往大的合并,不能把f[i]的给f[i-1],f[i-2],应该是存不下,我一开始这样写第19个样例wa了我下载下来对比发现和答案一样,但是不知道为什么显示的wa。
这个可以统计每一位的值。如果一个位的不够可以从下两位提上来,如果哪一个abs>=2就说明不管后面怎么补也不可能把他变为0.这样就行了。
#include<bits/stdc++.h>
using namespace std;
const int N = 3e5+10;
typedef long long ll;
char A[N];
char B[N];
ll cnt[N];
int main()
{
scanf("%s%s",A,B);
int lena=strlen(A);
int lenb=strlen(B);
for(int i=0;i<lena;i++) cnt[lena-i-1]+=A[i]-'0';
for(int i=0;i<lenb;i++) cnt[lenb-i-1]-=B[i]-'0';
int len=max(lenb-1,lena-1);
for(int i=len;i>=2;i--)
{
if(abs(cnt[i])>=2)
{
if(cnt[i]<0)
{
printf("<");
return 0;
}
else if(cnt[i]>0)
{
printf(">");
return 0;
}
}
cnt[i-1]+=cnt[i];
cnt[i-2]+=cnt[i];
}
for(int i=1;i>=0;i--)
{
if(cnt[i]<0)
{
printf("<");
return 0;
}
else if(cnt[i]>0)
{
printf(">");
return 0;
}
else if(i==0&&cnt[i]==0)
{
printf("=");
}
}
}
查看25道真题和解析