结构体封装高精度 大整数BigInt
曾经很讨厌高精度,因为它很长,不好记,而且在不是很单纯的题目里面感觉很烦(一个数就是一个数组)。在一道题目中出现的时候总是用一些奇技淫巧混过去(比如把两个 拼在一起)。
现在...还是正视了这个问题,有时候该写还是要写的(毕竟联赛不能用什么的)抽空把它搞成了一个结构体封装的形式,看起来要清爽一些。

1 #include<cstdio> 2 #include<algorithm> 3 #include<vector> 4 #include<cstring> 5 using namespace std; 6 #define ML 505//MaxLenth 7 #define ll long long 8 #define INF 0x3f3f3f3f 9 struct BT//BigInt 10 { 11 int a[ML],len; 12 BT()//初始化 13 { 14 memset(a,0,sizeof(a)); 15 len=1; 16 } 17 BT operator + (const BT &A)const 18 { 19 BT B; 20 B.len=max(len,A.len); 21 for(int i=0;i<B.len;i++) 22 { 23 B.a[i]+=A.a[i]+a[i]; 24 if(B.a[i]>=10) 25 {//进位 9+9=18 进位不会超过10 26 B.a[i]-=10; 27 B.a[i+1]++; 28 } 29 } 30 if(B.a[B.len])//进到了下一位 31 B.len++; 32 return B; 33 } 34 void read() 35 { 36 char d[ML]; 37 scanf("%s",d); 38 int l=strlen(d); 39 for(int i=0;i<l;i++) 40 a[i]=d[l-i-1]-'0'; 41 len=l; 42 } 43 void write() 44 { 45 for(int i=len-1;i>=0;i--) 46 printf("%d",a[i]); 47 } 48 }; 49 BT S,G,L; 50 int main() 51 { 52 S.read(); 53 G.read(); 54 L=S+G; 55 L.write(); 56 return 0; 57 }
参考:
https://blog.csdn.net/Rocky_Selene/article/details/52736357
https://blog.csdn.net/lxp20011125/article/details/82085221
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现