二維數組,高精度加法,兩個大數比較大小……
二維數組,高精度加法,兩個大數比較大小……#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;}}