高精度模板

本文提供了一个简单的高精度运算模板,包括字符串形式的大数加法和乘法实现。使用C++编写,适用于解决超出标准整型或浮点型数据范围的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

好,这就是naive的高精度模板。目前只有加法&乘法。

http://www.mamicode.com/info-detail-454902.html 可以参考这个。

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <algorithm>
 4 using namespace std;
 5 const int N = 10000;
 6 string add(string a,string b)
 7 {
 8     string ans="";
 9     int aa[N],bb[N];
10     fill(aa,aa+N,0);
11     fill(bb,bb+N,0);
12     int la=a.size();
13     int lb=b.size();
14     int len=max(la,lb);
15     for(int i=0;i<la;i++) aa[la-i-1]=a[i]-'0';
16     for(int i=0;i<lb;i++) bb[lb-i-1]=b[i]-'0';
17     for(int i=0;i<len;i++)
18     {
19         aa[i]+=bb[i];
20         if(aa[i]>9)
21         {
22             aa[i+1]+=aa[i]/10;
23             aa[i]%=10;
24             if(i+1==len) len++;
25         }
26     }
27     for(int i=len-1;i>=0;i--) ans+=(aa[i]+'0');
28     return ans;
29 }
30 
31 string mul(string a,string b)
32 {
33     string ans="";
34     int aa[N],bb[N],cc[N];
35     int la=a.size();
36     int lb=b.size();
37     int len=la+lb-1;
38     fill(aa,aa+N,0);
39     fill(bb,bb+N,0);
40     fill(cc,cc+N,0);
41     for(int i=0;i<la;i++) aa[la-i-1]=a[i]-'0';
42     for(int i=0;i<lb;i++) bb[lb-i-1]=b[i]-'0';
43     for(int i=0;i<la;i++)
44     {
45         for(int j=0;j<lb;j++)
46         {
47             cc[i+j]+=aa[i]*bb[j];
48         }
49     }
50     for(int i=0;i<len;i++)
51     {
52         if(cc[i]>9)
53         {
54             cc[i+1]+=cc[i]/10;
55             cc[i]%=10;
56             if(i+1==len) len++;
57         }
58     }
59     for(int i=len-1;i>=0;i--) ans+=(cc[i]+'0');
60     return ans;
61 }
62 
63 int main()
64 {
65     string a,b;
66     cin>>a>>b;
67     cout<<add(a,b)<<endl;
68     cout<<mul(a,b)<<endl;
69     return 0;
70 }
高精度模板

 

转载于:https://www.cnblogs.com/huyufeifei/p/8521797.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值