zoukankan      html  css  js  c++  java
  • 大数斐波那契数列的求法(大数相加) void

    这两种办法在文章部分已经都有提及,基本思想都是大数相加,一种是字符串相加,一种是数组保存位数

    第一种,字符串相加

    直接用一个字符串相加函数,计算结果保存到字符串数组中

    View Code
    1 string operator +(const string s1,const string s2)
    2 {
    3 string s;
    4 int l1=s1.size(),l2=s2.size(),i,j;
    5 int a[1100]={0},k=0;
    6 for(i=l1-1,j=l2-1;i>=0||j>=0;i--,j--,k++)
    7 {
    8 if(i>=0)
    9 a[k]+=(s1[i]-'0');
    10 if(j>=0)
    11 a[k]+=(s2[j]-'0');
    12 if(a[k]>9)
    13 {
    14 a[k+1]+=1;
    15 a[k]%=10;
    16 }
    17 }
    18 s="";
    19 for(i=k;i>=0;i--)
    20 {
    21 if(i==k)
    22 {
    23 if(a[k])
    24 s+=a[k]+'0';
    25 }
    26 else s+=a[i]+'0';
    27 }
    28 return s;
    29 }
    30
    31
    32  int main()
    33 {
    34 string a,b;
    35 fib[0] = "1";
    36 fib[1] = "1";
    37 for(int i = 2; i < 1024; i++)
    38 {
    39 fib[i] = fib[i - 1] + fib[i - 2];
    40 }
    41 fib[0] = "0";
    42 }

     第二种,用一个二维数组来保存,fb[n][i]表示第n个fib数的第i位数

    View Code
    1 #include <stdio.h>
    2 #include <stdlib.h>
    3 #include <iostream>
    4 #include <string.h>
    5  using namespace std;
    6  int fb[6001][1003];
    7  int main(void)
    8 {
    9 int len[6002];
    10 int n;
    11 memset(fb,0,sizeof(fb));
    12 fb[1][0] = 1;
    13 fb[2][0] = 1;
    14 len[1] = 1;
    15 len[2] = 1;
    16 for(int i=3; i<=6000; i++)
    17 {
    18 memcpy(fb[i],fb[i-1],sizeof(fb[i-1]));
    19 int tlen = max(len[i-1],len[i-2]);
    20 for(int k=0; k<tlen; k++)
    21 {
    22 fb[i][k] += fb[i-2][k];
    23 }
    24 for(int k=0; k<tlen; k++)
    25 if( fb[i][k] >= 10 )
    26 {
    27 fb[i][k+1]++;
    28 fb[i][k] %= 10;
    29 }
    30 if( fb[i][tlen] != 0 )
    31 tlen++;
    32 len[i] = tlen;
    33 }
    34 while( cin >> n )
    35 {
    36 for(int i=len[n]-1; i>=0; i--)
    37 cout << fb[n][i];
    38 cout << endl;
    39 }
    40  return 0;
    41 }
  • 相关阅读:
    polya定理
    树状数组
    离散数学通路数的矩阵计算法
    高次同余方程求解
    Uva1378
    poj2888
    poj2409&&poj1286
    poj2182
    poj2154
    判断一个字符是否为汉字
  • 原文地址:https://www.cnblogs.com/void/p/2040388.html
Copyright © 2011-2022 走看看