• POJ3982The Fibonacci sequence


    转载请注明出处:優YoU   http://user.qzone.qq.com/289065406/blog/1305340420

    变种的大数斐波那契数列

     

    水题,直接加就可以了,循环使用4个大数数组a,b,c,ans存放最新的和值,循环25次后的ans就是A99的值

     1 //Memory Time
    2 //216K 32MS
    3
    4 #include<iostream>
    5 #include<string>
    6 using namespace std;
    7
    8 const int size=1000; //大数位数
    9
    10 void add(char* aa,char* bb,char* cc,char* ans)
    11 {
    12 int a[size+1]={0};
    13 int b[size+1]={0};
    14 int c[size+1]={0};
    15 int pa=0,pb=0,pc=0;
    16
    17 int lena=strlen(aa);
    18 int lenb=strlen(bb);
    19 int lenc=strlen(cc);
    20
    21 /*倒序*/
    22
    23 for(int i=lena-1;i>=0;i--)
    24 a[pa++]=aa[i]-'0';
    25 for(int j=lenb-1;j>=0;j--)
    26 b[pb++]=bb[j]-'0';
    27 for(int k=lenc-1;k>=0;k--)
    28 c[pc++]=cc[k]-'0';
    29
    30 int len=lena>lenb?lena:lenb;
    31 len=len>lenc?len:lenc;
    32 char* d=new char[len+2]; //倒序的ans
    33
    34 int w=0; //低位到高位的进位
    35 for(int x=0;x<=len;x++) //'='为了处理最高位的进位
    36 {
    37 int temp=a[x]+b[x]+c[x]+w;
    38 d[x]=temp%10+'0';
    39 w=temp/10;
    40 }
    41
    42 bool flag=false;
    43 bool sign=false; //标记ans是否为全0
    44 for(w=0;len>=0;len--) //w和len均作指针使用,已无意义
    45 {
    46 if(!flag && d[len]=='0') //删除数字开头的0
    47 continue;
    48 else
    49 flag=true;
    50
    51 sign=true;
    52 ans[w++]=d[len];
    53 }
    54 if(sign)
    55 ans[w]='\0';
    56 else
    57 {
    58 ans[0]='0';
    59 ans[1]='\0';
    60 }
    61
    62 delete d;
    63 return;
    64 }
    65
    66 char a[size+1];
    67 char b[size+1];
    68 char c[size+1];
    69 char ans[size+1];
    70 int main(void)
    71 {
    72 while(cin>>a>>b>>c)
    73 {
    74 for(int i=1;i<=25;i++)
    75 {
    76 add(a,b,c,ans);
    77 add(b,c,ans,a);
    78 add(c,ans,a,b);
    79 add(ans,a,b,c);
    80 }
    81 cout<<ans<<endl; //循环25次后,ans刚好是第99个数的值
    82 }
    83 return 0;
    84 }
  • 相关阅读:
    codeforces 1096 题解
    pkuwc 前的任务计划
    codeforces 1093 题解
    luoguP5068 [Ynoi2015]我回来了
    luoguP5074 Eat the Trees
    二分
    保护
    数数字
    旅行
    すすめ!
  • 原文地址:https://www.cnblogs.com/lyy289065406/p/2121416.html
Copyright © 2020-2023  润新知