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;
    }
    

      

  • 相关阅读:
    一道题串联lambda表达式、链式编程、函数式接口、Stream流式计算
    JUC-8锁问题
    JUC-Java中的生产者消费者问题
    Jenkins配置
    kubernetes的配置
    容器技术之Docker的网站搭建
    CentOS 使用yum安装ELK环境命令详解
    golang学习笔记——context库
    golang学习笔记——sync库
    golang学习笔记——select
  • 原文地址:https://www.cnblogs.com/zlrrrr/p/9410829.html
Copyright © 2011-2022 走看看