高精度计算

1、高精度加法

cpp 复制代码
#include <bits/stdc++.h>
#include <iostream>
using namespace std;
vector<int> add(vector<int> &A,vector<int> &B){
	if(A.size()<B.size()) return add(B,A);
	int t=0;
	vector<int> C;
	for(int i=0;i<A.size();i++){
	    t+=A[i];
		if(i<B.size()) t+=B[i];
		C.push_back(t%10);
		t/=10;
	}
	if(t) C.push_back(t);
	return C;
}
int main(){
	string a,b;
	cin>>a>>b;
	vector<int> A,B;
	for(int i=a.size()-1;i>=0;i--) A.push_back(a[i]-'0');
	for(int i=b.size()-1;i>=0;i--) B.push_back(b[i]-'0');
	vector<int> C=add(A,B);
	for(int i=C.size()-1;i>=0;i--)cout<<C[i];
	return 0;
}

核心思想:用数组/向量存储大数的每一位(个位在前,高位在后),模拟竖式加法。

bash 复制代码
输入: "123" + "94"

存储:  A = [3,2,1]    B = [4,9]

计算过程:
i=0: t=3+4=7    C=[7]      t=0
i=1: t=2+9=11   C=[7,1]    t=1  
i=2: t=1+1=2    C=[7,1,2]  t=0

结果C = [7,1,2] → 倒序输出 "217"

验证: 123+94=217 ✓
相关推荐
Dlrb12111 天前
C语言-指针三
c语言·算法·指针·const·命令行参数
kkeeper~1 天前
0基础C语言积跬步之深入理解指针(5下)
c语言·开发语言
Tisfy1 天前
LeetCode 2540.最小公共值:双指针(O(m+n))
算法·leetcode·题解·双指针
一直不明飞行1 天前
Java的equals(),hashCode()应该在什么时候重写
java·开发语言·jvm
IronMurphy1 天前
【算法四十七】152. 乘积最大子数组
算法
REDcker1 天前
有限状态机与状态模式详解 FSM建模Java状态模式与C++表驱动模板实践
java·c++·状态模式
盲敲代码的阿豪1 天前
Python 入门基础教程(爬虫前置版)
开发语言·爬虫·python
basketball6161 天前
C++ 构造函数完全指南:从入门到进阶
java·开发语言·c++
互联科技报1 天前
2026超融合选型:Top5品牌与市场格局解读
开发语言·perl
weixin199701080161 天前
[特殊字符] 智能数据采集:数字化转型的“数据石油勘探队”(附Python实战源码)
开发语言·python