B1022:D进制的A+B(20')

思路:辗转相除法。两个注意点:1.A,B范围没超int型(<=2^31-1),但是加起来可能会超,用long long型(<=2^63-1)。2.用do while,因为可能一上来就是0。

#include<stdio.h>
int main(){
    long long A,B;
    int D,i=0;
    int a[100];
    scanf("%lld%lld%d",&A,&B,&D);
    A=A+B;
    do{
        a[i++]=A%D;
        A=A/D;
    }
    while(A!=0);
    for(i=i-1;i>=0;i--){
        printf("%d",a[i]);
    }
    return 0;
}

二刷代码:

#include<stdio.h>
int main(){
    long long A,B;
    int D,a[100],i = 0;
    scanf("%lld%lld%d",&A,&B,&D);
    A = A+B;
    do{
        a[i++] = A%D;
        A /= D;
    }
    while(A != 0);
    for(i--;i >= 0;i--){
        printf("%d",a[i]);
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
全部评论

相关推荐

昨天 14:22
门头沟学院 Java
大厂 测开 24*16离家近的事业编(大概只有大厂的1/4) 硕士
点赞 评论 收藏
分享
头像
10-15 22:27
已编辑
门头沟学院 C++
罗格镇的小镇做题家:我投了hr打电话来说学历太低了不符合要求,建议投荣耀,结果荣耀也投了一定水花没有,非本211硕
投递华为等公司10个岗位
点赞 评论 收藏
分享
11-07 13:31
怀化学院 Java
勇敢牛牛不怕难:又疯一个
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务