加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数运算

发布时间:2020-12-14 01:27:14 所属栏目:大数据 来源:网络整理
导读://大数加法 hdu 1002(可练习hdu 1715,1753,2100)#include iostream#includecstdio#includecstringusing namespace std;const int N=1500;int a[N],b[N];char a1[N],b1[N];int main(){ int t,cas=1; cint; while(t--){ memset(a,sizeof(a));memset(b,sizeof(b
//大数加法 hdu 1002(可练习hdu 1715,1753,2100)
#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=1500;
int a[N],b[N];
char a1[N],b1[N];
int main()
{
  int t,cas=1;
  cin>>t;
  while(t--){
        memset(a,sizeof(a));memset(b,sizeof(b));
    cin>>a1>>b1;
    printf("Case %d:n%s + %s = ",cas++,a1,b1);
    int len1=strlen(a1),len2=strlen(b1);
    for(int j=0,i=len1-1;i>=0;i--) a[j++]=a1[i]-'0';
    for(int j=0,i=len2-1;i>=0;i--) b[j++]=b1[i]-'0';
   for(int i=0,j=0;i<len1||j<len2;i++,j++)
   {
         a[i]+=b[j];
         if(a[i]>=10){a[i+1]+=1;}
         a[i]%=10;
   }
    int maxn=max(len1,len2);
    if(a[maxn]) cout<<a[maxn];
    for(int i=maxn-1;i>=0;i--) cout<<a[i];
    cout<<endl;
    if(t) cout<<endl;
  }
    return 0;
}
//阶乘,加法运算转乘法 hdu 1042
#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=40000;
int a[N];
int main()
{
 int n;
 while(~scanf("%d",&n))
 {
     memset(a,sizeof(a));
     a[0]=1;
     for(int i=2;i<=n;i++)
     {
         int k=0;
         for(int j=0;j<N;j++)
         {
             a[j]=(a[j]*i+k);
             k=a[j]/10;
             a[j]%=10;
         }
     }
     int i;
     for(i=N;i>=0;i--) if(a[i]) break;
     for(;i>=0;i--) printf("%d",a[i]);printf("n");
 }
    return 0;
}
//乘除结合 hdu 1133 (仅练习大数)
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
//(m+n)! * (m-n+1) /(m+1)
const int N=2005;
int a[N];
int main(){
int n,m,ca=1;
while(cin>>m>>n)
{
    if(m==0&&n==0) break;
    printf("Test #%d:n",ca++);
    if(m<n) {cout<<0<<endl;continue;}
    int flag=1;if(n==0){flag=0;}
    memset(a,sizeof(a));
    a[0]=1;
    for(int i=2;i<=m+n;i++)
    {
        int t=0;
       for(int j=0;j<N;j++)
       {
          a[j]=a[j]*i;
          if(i==m+n&&flag) a[j]*=(m-n+1);
          a[j]+=t;
          t=a[j]/10;
          a[j]%=10;
       }
    }
     int p=N-1;
     while(a[p]==0) p--;
     int t=0;
     if(flag)
     for(int i=p;i>=0;i--)
     {
         a[i]=10*t+a[i];
         t=a[i]%(m+1);
         a[i]=a[i]/(m+1);
     }
     while(a[p]==0) p--;
     for(int i=p;i>=0;i--) cout<<a[i];cout<<endl;
}
return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读