高精度算法

高精度加法

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

输入样例

111111111111111111111111111111 222222222222222222222222222222

输出样例

333333333333333333333333333333

#include 
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=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<

高精度减法

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

输入样例

333333333333333333333333333333 222222222222222222222222222222

输出样例

111111111111111111111111111111

#include 
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;ib[i])
			{
				fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff = true;
				break;
			}
			if(a[i]=10) jin = 1;
//		cout<=1;i--)
	{
		if(i==max(la,lb)+1)
		{
			if(c[i]!=0) cout<

高精度乘法

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

输入样例

11 11

输出样例

121

#include 
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<=1;i--)
	{
		if((i==la+lb&&c[i]!=0)||i!=la+lb)
		{
			cout<

你可能感兴趣的:(算法,c++)