PAT 1001 A+B Format (20分)

    科技2025-12-24  18

    题目链接:点击这里

    题意:计算 a + b a+b a+b 并以标准格式输出——也就是说,从最低位开始每三位数为一组并用逗号进行分隔。如果数字少于四位则不用分隔。

    思路:首先求出 a + b a+b a+b 的值 s s s,如果 s s s 等于 0 0 0,直接输出即可;如果 s s s 是负数,则输出一个负号,并把 s s s 变为正数,然后将 s s s 每一位上的数分解出来并保存到数组 d i g i t s [   ] digits[\ ] digits[ ] 中,注意这里是逆序保存的。接下来考虑如何正确地添加逗号。

    以 98999991 为例,它的标准输出为 98 , 999 , 991 98,999,991 98,999,991。从下表可以看出,应该在下标是 3 3 3 的倍数( 0 0 0 除外)的数位后面添加逗号。

    时间复杂度为 O ( n ) O(n) O(n)

    AC代码:

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N = 110; int digits[N], cnt; int main() { int a, b; scanf("%d%d", &a, &b); int s = a + b; if(s == 0) { printf("0"); return 0; } if(s < 0) { printf("-"); s = -s; } while(s) { digits[cnt++] = s % 10; s /= 10; } for(int i = cnt - 1; i >= 0; i--) { printf("%d", digits[i]); if(i > 0 && i % 3 == 0) printf(","); } return 0; }

    微信公众号《算法竞赛求职》,致力于详细讲解竞赛和求职所涉及到的算法原理和模板。欢迎关注,一起交流进步!

    Processed: 0.010, SQL: 9