hdu1316(菲波拉契数列)
http://acm.hdu.edu.cn/showproblem.php?pid=1316
#include<stdio.h> #include<string.h> long s[10000][200]={0}; char t[10000][200]; int main() { char a[200],b[200]; long i,j,n,m,count,k; s[1][0]=1; s[2][0]=2; k=0; for(i=3;i<10000;i++) for(j=0;j<200;j++) { k+=s[i-1][j]+s[i-2][j]; s[i][j]=k%10; k/=10; } while(k&&j<200) { s[i][j++]=k%10; k/=10; } for(i=10000-1;i>=1;i--) { k=0; for(j=200-1;j>=0;j--) if(s[i][j]!=0) break; for(;j>=0;j--) t[i][k++]=s[i][j]+48; t[i][k]='\0'; } while(scanf("%s%s",a,b)>0) { count=0; n=strlen(a); m=strlen(b); if(a[0]=='0'&&b[0]=='0') break; for(i=1;strlen(t[i])<n;i++); while(1) { if(strlen(t[i])==n) { if(strcmp(t[i],a)<0) i++; else break; } else break; } for(;i<10000;i++) { if(strlen(t[i])<m) count++; else if(strlen(t[i])==m) { if(strcmp(t[i],b)<=0) count++; else break; } else break; } printf("%ld\n",count); } return 0; }
朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。