PAT 1001 A+B Format

发布时间:2024年01月13日

原题目展示

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 Specification:

Each input file contains one test case. Each case contains a pair of integers?a?and?b?where??10^6≤a,b≤10^6. The numbers are separated by a space.

Output Specification:

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

解释

计算a+b的值并按照要求输出:每三位加上符号','

分析

把a+b转化为字符串,如-1000000009,那么从右向左每三个数字后面输出',',关键在于如何定位到需要输出','的位置。

得出index位置

对于这个字符串,字符串长度len = 11,在下表index = 1,4,7的位置后有逗号‘,’,也就是我们是从右向左数第4,7,10的位置,从右向左第3个位置也就是 右边位置的index-左边位置的index=3 的位置,右边位置下标就是len-1,也就是说 (len -1)-index1 == 3 ,index1就是我们从右向左第一个后面加逗号的位置,同理(len -1) - index2 == 6 .....

等号右边都是3的倍数,因此可以写成(len-1-index ) %3 == 0,但是由于 0%3 ==0,所以在最后一个位置后面也会出现逗号,因此需要排除此条件,index != len-1

综上所述得出index的条件是 ( (len-1-index)%3==0 && index!= len-1)

数字转化成字符串?

接下来我们开始写代码又发现一个问题,那么如何将数字转化成字符串呢?

一、使用字符串流对象stringstream

注意!头文件:#include < sstream?>

????long long a, b;
? ? cin >> a >> b;


? ? stringstream str;//定义一个stringstream类的str
? ? str << a + b;//a+b流入str
? ? string s;
? ? str >> s; //str中的a+b流向s,就实现了类型转化

二、 使用to_string函数

注意!头文件:#include < string >

????long long a, b;
? ? cin >> a >> b;
? ? string s = to_string (a+b);

AC代码展示?

#include <bits/stdc++.h>
using namespace std;
int main() {
    long long a, b;//使用long long避免范围不够
    cin >> a >> b;

    stringstream str;
    str << a + b;
    string s;
    str >> s;
     /*
           或者
       ? ? string s = to_string (a+b); 
           
    */

    int len = s.size();//或者int len = s.length(),两个效果相同
    
    for (int i = 0; i < len; i++) {
        cout << s[i];
        if (s[i] == '-') {    //遇到负号跳过不判断就行
            continue;
        }
        else {
            if ((len-i-1)%3==0 && i != len - 1) {
                cout << ',';
            }
        }
    }

    return 0;
}

文章来源:https://blog.csdn.net/weixin_72320937/article/details/135523355
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。