1001. A+B Format (20)

1. 原题链接

1001. A+B Format

2. 理解题目

给出数字a,b,求a+b并从右往左每3个数字用逗号隔开

3. 解题思路

[思路1]
先求出数字c,如果是负数先输出-号并对c取负变正,然后不断求余并保存在一个新数组a中;
假设c=2378562,我们知道结果应该是 2,378,562,对应a[ ]内容如下:
a[0]a[1]a[2]a[3]a[4]a[5]a[6]
2658732

然后我们令i=6,输出a[i]并执行i–;我们发现当i是3的倍数且i不是0的时候,输出”,”

[思路2]
因为a,b不超过10,所以相加的结果不超过7位数字,所以需要添加逗号的情况只有当c是7位或者4位时,其他情况直接输出即可;

4. AC代码

//【解法1】
#include<cstdio>
const int maxn=10;
int main(){
    int a,b,c;
    scanf("%d%d",&a,&b); c=a+b;

    if(c<0) {printf("-");c=-c;}
    int ans[maxn];int bit=0;
    do{
        ans[bit++]=c%10; //倒序存储0-(bit-1) 
        c/=10;
    }while(c);
    for(int i=bit-1;i>=0;i--){
        printf("%d",ans[i]);
        if(i%3==0&&i) printf(",");
    } 
}
//【解法2】
#include<cstdio>
const int maxn=10;
int main(){
    int a,b,c;
    scanf("%d%d",&a,&b);c=a+b;
    if(c<0) {printf("-");c=-c;}
    if(c>=1000000) printf("%d,%03d,%03d\n",c/1000000,c/1000%1000,c%1000);
    else if(c>=1000) printf("%d,%03d\n",c/1000,c%1000);
    else printf("%d\n",c);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值