二维数组,高精度加法,两个大数比较大小……
二维数组,高精度加法,两个大数比较大小……
#include<iostream>
#include<string.h>
using namespace std;
char a[600][150]={"0","1","2"};
void add(char s1[],char s2[],char a[])//大数加法
{
int i,j,k,sum=0;
k=strlen(s1)>strlen(s2)?strlen(s1):strlen(s2);
memset(a,'0',k);a[k+1]=0;
for(i=strlen(s1)-1,j=strlen(s2)-1;i>=0||j>=0;i--,j--,k--)
{ if(i>=0) sum+=s1[i]-'0'; if(j>=0) sum+=s2[j]-'0';
a[k]=sum%10+'0'; sum/=10;
}
if(sum) a[0]=sum+'0';
else strcpy(a,&a[1]);
}
int cmp(char a[],char b[])//比较大小
{
if(strlen(a)>strlen(b)) return 1;
if(strlen(a)<strlen(b)) return -1;
if(strlen(a)==strlen(b))
{
if(strcmp(a,b)==-1) return -1;
if(strcmp(a,b)==1) return 1;
if(strcmp(a,b)==0) return 0;
}
}
void chu()//计算斐波那契数列各项值
{
for(int i=3;i<600;i++)
add(a[i-1],a[i-2],a[i]);
}
int main(void)
{
int i,s;
char x[150],y[150];
chu();
while(cin>>x>>y)
{if(strcmp(x,"0")==0&&strcmp(y,"0")==0) break;
i=1;
while(cmp(a[i],x)<0) i++;
s=0;
while(cmp(a[i],y)<=0) {s++;i++;}
cout<<s<<endl;
}
}