C++ A C++;在不增加进位的情况下增加数字的程序

C++ A C++;在不增加进位的情况下增加数字的程序,c++,c++11,C++,C++11,Trans在creatnx商店购买了一台计算器。不幸的是,这是假的。它有很多错误。其中一个是不带负号的两个数字相加 示例表达式:12+9将在他的计算器中显示结果11。给定形式为a+b的表达式,请从该计算器输出结果 约束条件: #include <iostream> #include<string> #define ll long long int using namespace std; int main() { ll t; cin>>t; wh

Trans在creatnx商店购买了一台计算器。不幸的是,这是假的。它有很多错误。其中一个是不带负号的两个数字相加

示例表达式:
12+9
将在他的计算器中显示结果
11
。给定形式为
a+b
的表达式,请从该计算器输出结果

约束条件:

#include <iostream>
#include<string>
#define ll long long int
using namespace std;

int main()
{
  ll t;
  cin>>t;
  while(t--){
    string a, b;
    cin>>a>>b;
    ll max_last = max(a.size(), b.size());
    ll min_last = min(a.size(), b.size());
    ll result[max_last];
    ll i=max_last-1;
    for(ll  j= min_last-1; j>=0; i--, j--){
        ll sum = a[i]-'0' + b[j]-'0';
        result[i] = sum ;
    }
    while(i>=0){
        result[i] = a[i]-'0';
        i--;
    }

    ll sum = 0;
    for(ll i=0; i<max_last; i++){a
        sum = sum*10 + result[i]%10;
    }
    cout<<sum<<"\n";

 }
 return 0;
}
#include <bits/stdc++.h>

using namespace std;

signed main() {
 int t;
 cin >> t;
 assert(1 <= t && t <= 100);
 while(t--) {
    int a, b;
    cin >> a >> b;
    assert(1 <= a && a <= 1'000'000'000);
    assert(1 <= b && b <= 1'000'000'000);
    vector<int> A, B;
    while(a) {
        A.push_back(a % 10);
        a /= 10;
    }
    while(b) {
        B.push_back(b % 10);
        b /= 10;
    }
    while(A.size() < B.size()) A.push_back(0);
    while(B.size() < A.size()) B.push_back(0);
    for(int i = 0; i < A.size(); i++) {
        A[i] += B[i];
    }
    int ans = 0;
    reverse(begin(A), end(A));
    for(auto it: A) {
        ans = ans * 10 + it % 10;
    }
    cout << ans << endl;
  }
 }
一,≤ T≤ 一百

一,≤ a、 b≤ 109

我的代码通过了
1的测试用例≤ a、 b≤ 9
但是,对于原始约束,失败了。 找不到我的代码给出错误答案的情况

我的代码:

#include <iostream>
#include<string>
#define ll long long int
using namespace std;

int main()
{
  ll t;
  cin>>t;
  while(t--){
    string a, b;
    cin>>a>>b;
    ll max_last = max(a.size(), b.size());
    ll min_last = min(a.size(), b.size());
    ll result[max_last];
    ll i=max_last-1;
    for(ll  j= min_last-1; j>=0; i--, j--){
        ll sum = a[i]-'0' + b[j]-'0';
        result[i] = sum ;
    }
    while(i>=0){
        result[i] = a[i]-'0';
        i--;
    }

    ll sum = 0;
    for(ll i=0; i<max_last; i++){a
        sum = sum*10 + result[i]%10;
    }
    cout<<sum<<"\n";

 }
 return 0;
}
#include <bits/stdc++.h>

using namespace std;

signed main() {
 int t;
 cin >> t;
 assert(1 <= t && t <= 100);
 while(t--) {
    int a, b;
    cin >> a >> b;
    assert(1 <= a && a <= 1'000'000'000);
    assert(1 <= b && b <= 1'000'000'000);
    vector<int> A, B;
    while(a) {
        A.push_back(a % 10);
        a /= 10;
    }
    while(b) {
        B.push_back(b % 10);
        b /= 10;
    }
    while(A.size() < B.size()) A.push_back(0);
    while(B.size() < A.size()) B.push_back(0);
    for(int i = 0; i < A.size(); i++) {
        A[i] += B[i];
    }
    int ans = 0;
    reverse(begin(A), end(A));
    for(auto it: A) {
        ans = ans * 10 + it % 10;
    }
    cout << ans << endl;
  }
 }
#包括
#包括
#定义ll long long int
使用名称空间std;
int main()
{
LLT;
cin>>t;
而(t--){
a、b串;
cin>>a>>b;
ll max_last=max(a.size(),b.size());
ll min_last=min(a.size(),b.size());
ll结果[max_last];
ll i=最大值(最后一个-1);
对于(ll j=min\u last-1;j>=0;i--,j--){
ll sum=a[i]-'0'+b[j]-'0';
结果[i]=总和;
}
而(i>=0){
结果[i]=a[i]'0';
我--;
}
ll sum=0;

对于(ll i=0;i您有一些逻辑错误。只有当a.size()>b.size()时,第一个循环才有效

#包括
#包括
#包括
#定义ll long long int
使用名称空间std;
int main()
{
LLT;
cin>>t;
而(t--){
a、b串;
cin>>a>>b;
如果(a.size()=0;i--,j--){
结果[i]=(a[i]-'0'+b[j]-'0')%10;
}
而(i>=0){
结果[i]=(a[i]-'0')%10;
我--;
}
ll sum=0;
对于(ll i=0;i什么是T?代码不编译必须假定
for(ll i=0;i@kelalakat代表测试用例的数量。