高精度加法 bignum类实现(hdu 1865)

xiaoxiao2021-02-28  80

#include <bits/stdc++.h> #define maxn 10005 #define LL long long using namespace std; struct bignum {     char a[maxn];     bignum operator +(const bignum &b)     {         bignum c(a);         int i,j,k,sum=0;         k=strlen(c.a)>strlen(b.a)?strlen(c.a):strlen(b.a);         c.a[k+1]=0;         for(i=strlen(c.a)-1,j=strlen(b.a)-1; i>=0||j>=0; i--,j--,k--)         {             if(i>=0) sum+=c.a[i]-'0';             if(j>=0) sum+=b.a[j]-'0';             c.a[k]=sum+'0';             sum/=10;         }         if(sum) c.a[0]=sum+'0';         else strcpy(c.a,&c.a[1]);         return c;     }     bignum &operator =(const bignum &b)     {         strcpy(a,b.a);         return *this;     }     bignum(char s[])     {         strcpy(a,s);     }     bignum()     {         memset(a,0,sizeof(a));     } }; bignum dp[500]; void ini() {     dp[0]=dp[1]=bignum("1");     for(int i=2; i<500; i++)     {         dp[i]=dp[i-1]+dp[i-2];     } } int main() { //    bignum c,b; //    while(scanf("%s%s",c.a,b.a)) //    { //        cout<<(c+b).a<<endl; //    }     ini();     int cas;     cin>>cas;     char str[maxn];     while(cas--)     {         scanf("%s",str);         int l=strlen(str);         strcpy(str,dp[l].a);         printf("%s\n",str);     }     return 0; }
转载请注明原文地址: https://www.6miu.com/read-73073.html

最新回复(0)