萌新刚学OI 1.20s ,高精加求调

学术版

zt17 @ 2023-01-30 16:51:01

#include <bits/stdc++.h>
using namespace std;
int a1[10001],b1[10001],c1[10001];
int main()
{
    string a,b;
    cin >> a;
    cin >> b;
    for(int i=0;i<a.size();i++)
        a1[10001-a.size()+i] = int(a[i]) - 48;
    for(int i=0;i<b.size();i++)
        b1[10001-b.size()+i] = int(b[i]) - 48;
    for(int i=10000;i>0;i--)
        c1[i] = a1[i]+b1[i],c1[i-1]+=c1[i]/10,c1[i]=c1[i]%10;
    int csize = max(a.size(),b.size());
    if(c1[10000-csize-1] != 0) csize++;
    for(int i=c1[10000-csize];i<=10000;i++)
        cout << c1[i];
    return 0;
}

Input:

1
1

Output

0000000000000000000000000......0002

by olegekei @ 2023-01-30 16:57:27

@Justin123_

如果怕前导 0,你可以:

for(int i=1;i<=10000;i++)
    if(c1[i]){
    for(;i<=10000;i++)cout << c1[i];
}

by zt17 @ 2023-01-30 16:59:07

@olegekei 谢,学到了


by olegekei @ 2023-01-30 17:00:30

@Justin123_

另外你代码前导 0 的错误原因是最后一个循环 i 的初值为 c1[10000-csize],猜测你是想把 i 的初值设为 10000-csize


|