高精度加法(蓝桥)

题目链接

https://www.dotcpp.com/oj/problem1475.html

AC代码

//两个相同的方法,之所以写第二段代码,是因为第二种传递参数的方式,因为我没有初始化为0,debug了好久
//AC代码1
#include<bits/stdc++.h>
using namespace std;
const int N=1100;
int len1,len2;
int a[N],b[N],c[N];
void add(){
    int len=max(len1,len2);
    for(int i=1;i<=len;i++){
        c[i]+=a[i]+b[i];
        c[i+1]=c[i]/10;
        c[i]%=10;
    }
    if(c[len+1]!=0) len++;
    for(int i=len;i>=1;i--)
        cout<<c[i];
    return ;
}
int main(){
    char s1[N],s2[N];
    cin>>s1+1;
    cin>>s2+1;
    len1=strlen(s1+1);
    len2=strlen(s2+1);
    for(int i=1;i<=len1;i++)
        a[len1-i+1]=s1[i]-'0';
    for(int i=1;i<=len2;i++)    
        b[len2-i+1]=s2[i]-'0';

    add();
    return 0;
} 
//AC代码2
#include<bits/stdc++.h>
using namespace std;
const int N=1100;
int len1,len2;
int c[N];
void add(int* a,int* b){
    int len=max(len1,len2);
    for(int i=1;i<=len;i++){
        c[i]+=a[i]+b[i];
        c[i+1]=c[i]/10;
        c[i]%=10;
    }
    if(c[len+1]!=0) len++;
    for(int i=len;i>=1;i--)
        cout<<c[i];
    return ;
}
int main(){    
    char s1[N],s2[N];
    int a[N],b[N];
    memset(a,0,sizeof a);//勿忘!!! 
    memset(b,0,sizeof b);//勿忘!!! 
    cin>>s1+1;
    cin>>s2+1;
    len1=strlen(s1+1);
    len2=strlen(s2+1);
    for(int i=1;i<=len1;i++)
        a[len1-i+1]=s1[i]-'0';
    for(int i=1;i<=len2;i++)    
        b[len2-i+1]=s2[i]-'0';

    add(a,b);
    return 0;
} 

总结

板子而已

小白的高精度 文章被收录于专栏

讲讲高精度基础,小白入门

全部评论

相关推荐

在做测评的伊登很想奋...:别看了,简历没问题,中国人才太多了,所以显得没什么光辉,别怀疑,这水平进不去,那证明企业里边全是985。除了多投碰运气也没啥办法。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务