每日刷题计划Day2笔记-字符串+树

题源:acwing

1473. A + B 格式

计算 a+b 并以标准格式输出总和----也就是说,从最低位开始每隔三位数加进一个逗号(千位分隔符),如果结果少于四位则不需添加。

输入格式
共一行,包含两个整数 a 和 b。

输出格式
共一行,以标准格式输出 a+b 的和。

数据范围 −106≤a,b≤106

输入样例:
-1000000 9

输出样例:
-999,991

#include 
using namespace std;

int main(){
   
    int a, b;
    cin>>a>>b;
    int c = a + b;
    string num = to_string(c);
    string res;
    for(int i = num.size() - 1, j=0; i>=0; i-- ){
   
        res = num[i] +res;
        j++;
        if( j % 3 == 0 && i && num[i-1] != '-' ) 
            res = ',' + res;
    }
    cout<< res <<endl;
    return 0;
}

to_string()函数:把数字变为字符串。
字符数字 - ‘0’ :把字符变成数字。

循环条件是:if( j % 3 == 0 && i && num[i-1] != ‘-’ )
每一次都是先把原字符串的当前位放进答案,然后(对于原字符串的这一位) 判断在当前答案的下一位上是否该放’,’
三种情况:

  1. j 是count答案的位数,每有3位,得加个′,′,即j % 3 == 0

  2. 如果和为负数,就不能在本来是‘-’的位置(也是num[0]的位置)写′,′,即原字符串的下一位也就是num[i - 1] != ’ ,’

  3. i = 0 时整个字符串刚好结束,如果刚好是3倍,就不用再加′,′了(比如 -48 + 2)

题解参考:小张同学

1477. 拼写正确

给定一个非负整数 N,你的任务是计算 N 的所有数字的总和,并以英语输出总和的每个数字。

输入格式
共一行,包含一个整数 N。

输出格式
共一行,用英语输出总和的每个数字,单词之间用空格隔开。

数据范围
0≤N≤10100

输入样例: 12345
输出样例: one five

#include 
using namespace std;
int main(

你可能感兴趣的:(c++,算法,c语言)