zoukankan      html  css  js  c++  java
  • PAT 甲级 1001 A+B Format

    https://pintia.cn/problem-sets/994805342720868352/problems/994805528788582400

    Calculate a + b and output the sum in standard format -- that is, the digits must be separated into groups of three by commas (unless there are less than four digits).

    Input

    Each input file contains one test case. Each case contains a pair of integers a and b where -1000000 <= a, b <= 1000000. The numbers are separated by a space.

    Output

    For each test case, you should output the sum of a and b in one line. The sum must be written in the standard format.

    Sample Input

    -1000000 9
    

    Sample Output

    -999,991

    代码:
    #include <bits/stdc++.h>
    using namespace std;
    
    const int maxn = 1e5 + 10;
    char s[maxn], out[maxn];
    int a[maxn];
    
    void zlr_itoa(int x) {
        if(x == 0) {
            s[0] = '0';
            s[1] = 0;
            return ;
        }
        int top = 0;
        while(x) {
            a[top ++] = x % 10;
            x = x / 10;
        }
        int sz = 0;
        while(top != 0) {
            s[sz++] = (char)(a[-- top] + '0');
            s[sz] = 0;
        }
    }
    
    int main() {
        int a, b;
        scanf("%d%d", &a, &b);
        int sum = a + b;
        if(sum == 0) {
            printf("0
    ");
            return 0;
        }
        if(sum < 0) {
            printf("-");
            sum = sum * (-1);
        }
    
        zlr_itoa(sum);
        int len = strlen(s);
    
        if(len < 3) {
            printf("%s
    ", s);
            return 0;
        }
    
        if(len % 3 == 0) {
            for(int i = 0; i < len - 3; i += 3) {
                for(int j = i; j < i + 3; j ++)
                printf("%c", s[j]);
                printf(",");
            }
            printf("%c%c%c", s[len-3], s[len - 2], s[len - 1]);
        }
    
        else if(len % 3 == 1) {
            printf("%c,", s[0]);
            for(int i = 1; i < len - 4; i += 3) {
                for(int j = i; j < i + 3; j ++)
                    printf("%c", s[j]);
                    printf(",");
            }
            printf("%c%c%c", s[len-3], s[len - 2], s[len - 1]);
        }
    
        else if(len % 3 == 2) {
            printf("%c%c,", s[0], s[1]);
            for(int i = 2; i < len - 5; i += 3) {
                for(int j = i; j < i + 3; j ++)
                    printf("%c", s[j]);
                    printf(",");
            }
            printf("%c%c%c", s[len-3], s[len - 2], s[len - 1]);
        }
    
        printf("
    ");
        return 0;
    }
    

      

  • 相关阅读:
    重构手法之简化函数调用【5】
    netstat命令
    Python使用wxpy模块实现微信两两群组消息同步
    format函数格式化显示的方法
    scrapy介绍及使用
    Linux常用命令复习
    Django实现博客项目
    Django中CKEditor富文本编译器的使用
    Django-admin站点管理的详细使用
    电脑修改密码后,git push 报错unable to access
  • 原文地址:https://www.cnblogs.com/zlrrrr/p/9410829.html
Copyright © 2011-2022 走看看