美文网首页
1001. A+B Format (20)

1001. A+B Format (20)

作者: _SANTU_ | 来源:发表于2017-03-13 01:46 被阅读0次

    时间限制
    400 ms
    内存限制
    65536 kB
    代码长度限制
    16000 B
    判题程序
    Standard
    作者
    CHEN, Yue

    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

    AC代码:

    #include <iostream>
    #include <string>
    #include <algorithm>
    using namespace std;
    
    int main(int argc, const char * argv[]) {
        int a, b, sum;
        cin >> a >> b;
        sum = a + b;
        
        string str;
        str = to_string(sum);
        if(str[0] == '-') {
            cout << '-';
            str.erase(0,1);
        }
        reverse(str.begin(), str.end() );
        int len = (int)str.size();
        for(int i = 3; i < len; i += 3) {
            str.insert(i, ",");
            i++;
            len++;
        }
        reverse(str.begin(), str.end() );
        cout << str << endl;
        return 0;
    }
    

    string字符串操作:

    • erase
      原型:
      (1)string& erase ( size_t pos = 0, size_t n = npos );
      (2)iterator erase ( iterator position );
      (3)iterator erase ( iterator first, iterator last );
      用法:
      (1)erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符
      (2)erase(position);删除position处的一个字符(position是个string类型的迭代器)
      (3)erase(first,last);删除从first到last之间的字符(first和last都是迭代器)

    • insert
      原型:
      string &insert(int p0, const char *s);
      string &insert(int p0, const char *s, int n);
      string &insert(int p0,const string &s);
      string &insert(int p0,const string &s, int pos, int n);
      //前4个函数在p0位置插入字符串s中pos开始的前n个字符
      string &insert(int p0, int n, char c);//此函数在p0处插入n个字符c
      iterator insert(iterator it, char c);//在it处插入字符c,返回插入后迭代器的位置
      void insert(iterator it, const_iterator first, const_iterator last);//在it处插入[first,last)之间的字符
      void insert(iterator it, int n, char c);//在it处插入n个字符c

    • to_string函数 C++11 新增方法
      string to_string (int val);
      string to_string (long val);
      string to_string (long long val);
      string to_string (unsigned val);
      string to_string (unsigned long val);
      string to_string (unsigned long long val);
      string to_string (float val);
      string to_string (double val);
      string to_string (long double val)

    • reverse函数
      数组转置 reverse(v.begin(),v.end())

    提供另一种解法

    //
    //  main.cpp
    //  pat
    //
    //  Created by yaojies on 16/8/16.
    //  Copyright © 2016年 yaojies. All rights reserved.
    //
    
    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int main(int argc, const char * argv[]) {
        int numA, numB, result;
        void functionOfPrint(int result);
        cin >> numA >> numB;
        result = numA + numB;
        //print "-" if result < 0
        if(result<0){
            cout << "-";
            result = -result;
        }
        functionOfPrint(result);
        cout << endl;
        return 0;
    }
    void functionOfPrint(int result){
        if(result>999){
            functionOfPrint(result/1000);
            cout << ",";
            cout << setfill('0')<<setw(3) << result%1000;
        }else{
            cout << result;
        }
    }
    
    

    相关文章

      网友评论

          本文标题:1001. A+B Format (20)

          本文链接:https://www.haomeiwen.com/subject/ydqzgttx.html