标题:【日常送分】A+B Problem 高精
只看楼主
ghost_no_eq
Rank: 2
等 级:论坛游民
威 望:3
帖 子:7
专家分:30
注 册:2021-12-8
 问题点数:0 回复次数:4 
【日常送分】A+B Problem 高精
A+B Problem 高精
分数:1(不然很快就没分了

要求:
输入a,b
输出a+b

数据范围:
2^128<a,b<2^1024

[此贴子已经被作者于2021-12-8 20:13编辑过]

搜索更多相关主题的帖子: 输入 数据 输出 Problem 范围 
2021-12-08 20:01
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:0 
可以参考下这个。
https://www.
收到的鲜花
  • ghost_no_eq2021-12-10 19:45 送鲜花  1朵   附言:谢谢~
2021-12-09 23:41
程序员yu
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2021-12-27
得分:0 
高精有点难,但写个函数就行了
2021-12-27 19:40
op123
Rank: 6Rank: 6
等 级:贵宾
威 望:21
帖 子:170
专家分:461
注 册:2022-6-4
得分:0 
#include <bits/stdc++.h>
using namespace std;
vector<int> add(vector<int> &A,vector<int> &B){
    vector<int> C;
    int t=0;
    for(int i=0;i<A.size()||i<B.size();i++){
        if(i<A.size())t+=A[i];
        if(i<B.size())t+=B[i];
        C.push_back(t%10);
        t/=10;
    }
    if(t)C.push_back(1);
    return C;
}
int main(){
    string a,b;
    cin>>a>>b;
    vector<int> A,B;
    for(int i=a.size()-1;i>=0;i--)A.push_back(a[i]-'0');
    for(int i=b.size()-1;i>=0;i--)B.push_back(b[i]-'0');
    vector<int> C=add(A,B);
    for(int i=C.size()-1;i>=0;i--)cout<<C[i];
    cout<<endl;
    return 0;
}
2022-06-29 20:57
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
你这个 a,b 是十进制形式输入输出吗?有没有前导零?

#include <cstdio>

int main( void )
{
    // 2^1024 使用十进制表示,需要309位
    char a[310]; size_t ai;
    char b[310]; size_t bi;
    scanf(" %*[0]"); scanf("%s%zn", a, &ai );
    scanf(" %*[0]"); scanf("%s%zn", b, &bi );

    // 2^1025 使用十进制表示,需要309位
    char c[310];
    char* p = c + sizeof(c);
    *--p = '\0';

    for( char carry=0; ; )
    {
        carry += (ai!=0?a[--ai]-'0':0) + (bi!=0?b[--bi]-'0':0);
        *--p = '0' + carry%10;
        carry /= 10;

        if( ai==0 && bi==0 )
        {
            if( carry!=0 || *p=='\0' )
                *--p = '0' + carry;
            break;
        }
    }

    puts( p );
}
没有考虑输入为0的情况,因为题目中说了“2^128<a,b<2^1024”

输入 06 9999 输出 10005
输入 9999 06 输出 10005
输入
179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216
179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216
输出
359538626972463181545861038157804946723595395788461314546860162315465351611001926265416954644815072042240227759742786715317579537628833244985694861278948248755535786849730970552604439202492188238906165904170011537676301364684925762947826221081654474326701021369172596479894491876959432609670712659248448274432
2022-06-30 09:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-507809-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016656 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved