高精度算法

高精度加法

输入两个数,输出他们的和(高精度)

输入样例

111111111111111111111111111111 222222222222222222222222222222

输出样例

333333333333333333333333333333

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

string a,b;
int aa[510],bb[510];
int c[510];


int main()
{
	
	cin>>a>>b;
	int la = a.size();
	int lb = b.size();
	for(int i = la-1;i>=0;i--)
	{
		aa[la-1-i] = a[i]-'0';
	}
	for(int i = lb-1;i>=0;i--)
	{
		bb[lb-1-i] = b[i]-'0';
	}
	
	for(int i = 0;i<max(la,lb);i++)
	{
		c[i] = aa[i]+bb[i];
	}
	for(int i = 0;i<max(la,lb);i++)
	{
		if(c[i]>=10)
		{
			c[i+1]++;
		}
		c[i] = c[i]%10;
	}
	
	
	for(int i = max(la,lb);i>=0;i--)
	{
		if(i==max(la,lb))
		{
			if(c[i]!=0) cout<<c[i];
		}
		else cout<<c[i];
	}
	
	
	return 0;
}

高精度减法

输入两个数,输出他们的差(高精度)

输入样例

333333333333333333333333333333 222222222222222222222222222222

输出样例

111111111111111111111111111111

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

string a,b;
int aa[10090],bb[10090];
int c[10090];


int main()
{
	
	cin>>a>>b;
	int la = a.size();
	int lb = b.size();
	for(int i = la-1;i>=0;i--)
	{
		aa[la-i] = a[i]-'0';
	}
	for(int i = lb-1;i>=0;i--)
	{
		bb[lb-i] = b[i]-'0';
	}
	int jin = 0;
	bool fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff = false;
	if(la>lb)
	{
		fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff = true;
	}
	else if(la==lb)
	{
		for(int i = 0;i<la;i++)
		{
			if(a[i]>b[i])
			{
				fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff = true;
				break;
			}
			if(a[i]<b[i]) break;
		}
	}
	if(fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff==true)
	{
		for(int i = 1;i<=max(la,lb)+1;i++)
		{
			
			int ccc = aa[i]-bb[i];
			c[i] = ccc%10;
			if(jin==1)
			{
				c[i]--;
				jin = 0;
				if(c[i]<0)
				{
					c[i] = (10+c[i])%10;
					jin = 1;
				}
			}
			if(c[i]<0)
			{
				c[i] = (10+c[i])%10;
				jin = 1;
			}
			if(ccc<0) jin = 1;
//			cout<<i<<" "<<aa[i]<<" "<<bb[i]<<" "<<c[i]<<endl;
			
		}
	}
	else
	{
		for(int i = 1;i<=max(la,lb)+1;i++)
		{
			
			int ccc = bb[i]-aa[i];
			c[i] = ccc%10;
			if(jin==1)
			{
				c[i]--;
				jin = 0;
				if(c[i]<0)
				{
					c[i] = (10+c[i])%10;
					jin = 1;
				}
			}
			if(c[i]<0)
			{
				c[i] = (10+c[i])%10;
				jin = 1;
			}
			if(ccc>=10) jin = 1;
//		cout<<i<<" "<<aa[i]<<" "<<bb[i]<<" "<<c[i]<<endl;
			
		}
	}
	if(c[0]==0&&c[1]==0&&c[3]==0&&c[4]==0&&c[5]==0&&c[6]==0&&c[7]==0&&c[8]==0&&c[9]==0&&c[10]==0&&c[11]==0&&c[12]==0&&c[13]==0&&c[15]==0)
	{
		cout<<0;
		return 0;
	}
	if(fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff==false) cout<<"-";
	for(int i = max(la,lb)+1;i>=1;i--)
	{
		if(i==max(la,lb)+1)
		{
			if(c[i]!=0) cout<<c[i];
		}
		else cout<<c[i];
	}
	
	
	return 0;
}

高精度乘法

输入两个数,输出他们的积(高精度)

输入样例

11 11

输出样例

121

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

string a,b;
int aa[2010],bb[2010];
int c[4020];


int main()
{
	
	
	cin>>a>>b;
	if(a=="0"||b=="0")
	{
		cout<<0;
		return 0;
	}
	int la = a.size();
	int lb = b.size();
	for(int i = la-1;i>=0;i--)
	{
		aa[la-i] = a[i]-'0';
	}
	for(int i = lb-1;i>=0;i--)
	{
		bb[lb-i] = b[i]-'0';
	}
	for(int i = 1;i<=lb;i++)
	{
		for(int j = 1;j<=la;j++)
		{
			c[j+i-1] += aa[j]*bb[i];
		}
	}
//	for(int i = 1;i<=la+lb;i++)
//	{
//		cout<<i<<" "<<c[i]<<endl;
//	}
//	cout<<endl<<endl<<endl;
	int jin = 0;
	for(int i = 1;i<=la+lb;i++)
	{
		int ccccc = c[i]+jin;
		c[i] = ccccc%10;
		jin = ccccc/10;
	}
	
	for(int i = la+lb;i>=1;i--)
	{
		if((i==la+lb&&c[i]!=0)||i!=la+lb)
		{
			cout<<c[i];
		}
	}
	
	return 0;
}
相关推荐
颜酱34 分钟前
图的数据结构:从「多叉树」到存储与遍历
javascript·后端·算法
saltymilk5 小时前
使用 C++ 模拟 ShaderLanguage 的 swizzle
c++·模板元编程
zone77396 小时前
006:RAG 入门-面试官问你,RAG 为什么要切块?
后端·算法·面试
CoovallyAIHub9 小时前
OpenClaw 近 2000 个 Skills,为什么没有一个好用的视觉检测工具?
深度学习·算法·计算机视觉
CoovallyAIHub9 小时前
CVPR 2026 | 用一句话告诉 AI 分割什么——MedCLIPSeg 让医学图像分割不再需要海量标注
深度学习·算法·计算机视觉
CoovallyAIHub9 小时前
Claude Code 突然变成了 66 个专家?这个 5.8k Star 的开源项目,让我重新理解了什么叫"会用 AI"
深度学习·算法·计算机视觉
兆子龙9 小时前
前端哨兵模式(Sentinel Pattern):优雅实现无限滚动加载
前端·javascript·算法
xlp666hub12 小时前
Leetcode第五题:用C++解决盛最多水的容器问题
linux·c++·leetcode
CoovallyAIHub13 小时前
9个视觉语言模型工厂实测:Qwen 87.9%碾压全场,你的显卡能跑哪个?
算法
SparkX开源AI知识库13 小时前
手摸手带你安装OpenClaw并对接飞书
算法·架构