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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
全部评论

相关推荐

自学java狠狠赚一...:骗你点star的,港卵公司,记得把star收回去
点赞 评论 收藏
分享
05-26 22:25
门头沟学院 Java
Java小肖:不会是想叫你过去把你打一顿吧,哈哈哈
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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