社区讨论

图灵机+高精度,怎么过不了A+Bproblem

灌水区参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@lqum363x
此快照首次捕获于
2024/01/01 15:41
2 年前
此快照最后确认于
2024/01/01 19:29
2 年前
查看原帖
有什么错误?(也就图一乐,无意义)
CPP
#include<bits/stdc++.h>
using namespace std;
int ad(int a,int b)
{
	if(a==0 && b==0)
	{
		return 0;
	}
	if(a==0)
	{
		return b;
	}
	if(b==0)
	{
		return a;
	}
	int c[a+b+2],d=0;
	for(int A=0;A<a;A++)
	{
		c[A]=1;
	}
	c[a]=0;
	for(int A=a+1;A<a+b+1;A++)
	{
		c[A]=1;
	}
	c[a+b+1]=0;
	while(true)//condition I
	{
		if(c[d]==1)
		{
			d++;
		}
		else
		{
			c[d]=1;
			d++;
			break;
		}
	}
	while(true)//condition II
	{
		if(c[d]==1)
		{
			d++;
		}
		else
		{
			d--;
			break;
		}
	}
	while(true)//condition III
	{
		if(c[d]==1)
		{
			c[d]=0;
		}
		else
		{
			break;
		}
	}
	int e=0;
	for(int A=0;A<a+b+2;A++)
	{
		if(c[A]==1)
		{
			e++;
		}
	}
	return e;
}
int main()
{
	string a,b;
	cin>>a>>b;
	int c=max(a.length(),b.length());
	int d[c],e[c],f[c+1];
	for(int A=0;A<c;A++)
	{
		d[A]=0;
		e[A]=0;
		f[A]=0;
	}
	f[c]=0;
	int g=a.length(),h=b.length();
	for(int A=1;A<=g;A++)
	{
		d[c-A]=int(a[g-A])-48;
	}
	for(int A=1;A<=h;A++)
	{
		e[c-A]=int(b[h-A])-48;
	}
	for(int A=1;A<=c;A++)
	{
		f[c-A+1]=ad(ad(d[c-A],e[c-A]),f[c-A+1]);
		f[c-A]=ad(f[c-A+1]/10,f[c-A]);
        f[c-A+1]%=10;
	}
	int i=0;
	for(int A=0;A<=c;A++)
	{
		if(f[A]!=0)
		{
			i=1;
		}
		if(i)
		{
			cout<<f[A];
		}
        if(A==c && !i)
		{
			cout<<0;
		}
	}
}
感谢帮忙(也就图一乐,无意义)

回复

2 条回复,欢迎继续交流。

正在加载回复...