问题标题: 高精度问题

0
0
已解决
李颂宥
李颂宥
初级光能
初级光能

请问高精度代码怎么写?老师上课时讲的忘了

李颂宥在2018-08-07 12:28:51追加了内容

最好加减法代码都给我


1
已采纳
宫西诚
宫西诚
修练者
修练者

请勿举报,纯属帮忙,最基本的代码

加法

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string a,b;
	int x[100000],y[100000],z[100000],t=1,jw=0,d=1;
	cin>>a>>b;
	x[0]=a.size();
	y[0]=b.size();
	z[0]=max(x[0],y[0]);
	for(int i=x[0]-1;i>=0;i--)
	{
		x[t]=a[i]-'0';
		t++;
	}
	
   for(int i=y[0]-1;i>=0;i--)
	{
		y[d]=b[i]-'0';
		d++;
	}
	for(int i=1;i<=z[0];i++)
	{
		z[i]=x[i]+y[i]+jw;
		jw=z[i]/10;
		z[i]=z[i]%10;
	}
	if(jw)
	{
		z[0]++;
		z[z[0]]=jw;
	}
	for(int i=z[0];i>=1;i--)
	cout<<z[i];
	return 0;
 } 

减法

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string a,b,c;
	int x[100000],y[100000],z[100000],t=1,jw=0,d=1,m;
	cin>>a>>b;
	x[0]=a.size();
	y[0]=b.size();
	z[0]=max(x[0],y[0]);
	if(x[0]<y[0]||x[0]==y[0]&&a<b)
	{
		swap(a,b);
		cout<<"-";
	}
	x[0]=a.size();
	y[0]=b.size();
	for(int i=x[0]-1;i>=0;i--)
	{
		x[t]=a[i]-'0';
		t++;
	}
	
   for(int i=y[0]-1;i>=0;i--)
	{
		y[d]=b[i]-'0';
		d++;
	}
	for(int i=1;i<=z[0];i++)
	{
	    if(x[i]<y[i])
		{
			x[i]+=10;
			x[i+1]--;
		 } 
		 z[i]=x[i]-y[i];
	}
	for(int i=z[0];i>=1;i--)
	{
		if(z[i]!=0)
		{
			m=i;
			break;
		}
	} 
    while(z[z[0]]==0&&z[0]>1)
    z[0]--;
	for(int i=z[0];i>=1;i--)
	cout<<z[i];
	return 0;
 } 

 

宫西诚在2018-08-07 13:29:18追加了内容

请勿举报,谢谢

0
0
0
我要回答