我想我在某个地方犯了一个错误,但我似乎无法找到它。我认为问题在于以错误的顺序添加或输入数据。我为任何错误道歉,英语不是我的主要语言。 enter image description here
#include <iostream>
using namespace std;
int main()
{
int d, n, m, carry;
int a[10000];
int b[10000];
int addition[10001];
cin>>d;
for(int i=0; i<d; i++)
{
int a[10000]={0};
int b[10000]={0};
int addition[10001]={0};
cin>>n;
for(int i=n; i>=1; i--)
{
cin>>a[i];
}
cin>>m;
for (int i=m; i>=1; i--)
{
cin>>b[i];
}
if(n<m)
{
n=m;
}
carry=0;
for (int i=1; i<=n; i++)
{
addition[i]=(a[i]+b[i]+carry)%2; //way my teacher
carry=(a[i]+b[i]+carry)/2;
}
addition[n+1]=carry;
// if(addition[n+1]==0)n--;
for(int i=n; i>=0; i--)
{
cout<<addition[i];
}
}
return 0;
}
答案 0 :(得分:0)
我认为至少有两个错误。
1)在
for(int i=n; i>=0; i--)
你倒数到0但是在其他每一个循环中,你已经倒数到1.由于你计算得太远,你的输出最后会有一个额外的零。 (例如,它应显示1000
何时应显示100
。)
2)同样在该循环中,您从n
开始。但是你可能会遗漏n+1
,你是否忘记输出它?