大菲波数

来源:互联网 发布:天刀捏脸数据女御姐脸 编辑:程序博客网 时间:2024/06/10 10:15

Fibonacci数列

题目网址http://acm.hdu.edu.cn/showproblem.php?pid=1715

//15Ms
//离线方式

其实之后看来这就是水的不行的算法,就是用数组的形式来做的,但是之后做到类似于斐波那契数列的时候,那运算如果这样做的话数组开的肯定也是不够的,所以这还是需要更加精准的算法了,例如运用快速幂等进行运算,详见博主博客
//整体的思路就是将低位放在前面,这样的话就比较简单,并且进位简单

#include <iostream>#include <cstring>using namespace std;int a[1001][1001];int count[1001];//记录第几个数有多少位int main (){    memset(a,0,sizeof(a)); a[1][1]=a[2][1]=1; count[1]=count[2]=1; int i,j,k; for(i=3;i<=1000;i++) {  k=0;  for(j=1;j<=count[i-1];j++)//由于  {   k++;   a[i][k]=a[i-1][j]+a[i-2][j]+a[i][k];//将前两个数的对应位想加,并且有进位   if(a[i][k]>9)   {    a[i][k+1]=a[i][k]/10;    a[i][k]=a[i][k]%10;//低位    if(j==count[i-1])//如果是最后一位的话,需要将k加一,要不然最后一位就没有了     k++;   }   }   count[i]=k;//记录下当前的有多少位 } scanf("%d",&k); while(k--) {  cin>>i;  for(j=count[i];j>=1;j--)   printf("%d",a[i][j]);   printf("\n"); }  return 0;}


 

0 0
原创粉丝点击