zoj 1962 || poj 2413 How many Fibs?

来源:互联网 发布:双十一淘宝全部半价吗 编辑:程序博客网 时间:2024/06/05 04:11
#include <stdio.h>#include <iostream>#include <stdlib.h>#include <string.h>using namespace std;int f[500][110];int x;int len[500],nn,bb;int find(int s[],int n){for(int i=1;i<500;i++){if(len[i]<n)continue;if(len[i]==n){ int flag=0;for(int k=n-1;k>=0;k--){if(f[i][k]>s[k])return i;else if(f[i][k]==s[k])continue;else { flag=1;break;}}if(flag==0){x++;return i;}}if(len[i]>n)return i;}return 0;}int main(){char s1[110],s2[110];int low[110],high[110];memset(f,0,sizeof(f));memset(len,0,sizeof(len));f[1][0]=1;f[2][0]=2;len[1]=len[2]=1;for(int i=3;i<500;i++){memcpy(f[i],f[i-1],sizeof(f[i-1]));int l=len[i-1]>len[i-2]?len[i-1]:len[i-2];for(int k=0;k<l;k++){f[i][k]+=f[i-2][k];if(f[i][k]>9){f[i][k+1]++;f[i][k]%=10;}if(f[i][l]==0)len[i]=l;else len[i]=l+1;}}while(scanf("%s %s",s1,s2)!=EOF&&(s1[0]!='0'||s2[0]!='0')){int len1=strlen(s1);int len2=strlen(s2);int i;x=0;for(i=len1-1;i>=0;i--)low[len1-1-i]=s1[i]-'0';for(i=len2-1;i>=0;i--)high[len2-i-1]=s2[i]-'0';int a=find(low ,len1);int nn=x;x=0;int b=find(high,len2);bb=x;if(nn==1&&bb==1){cout<<b-a+1<<endl;continue;}if(nn==1&&bb==0)cout<<b-a<<endl;else{if(nn==0&&bb==1)cout<<b-a+1<<endl;else cout<<b-a<<endl;}}return 0;}

转载声明:http://blog.csdn.net/zxy_snow/article/details/6068592
原创粉丝点击