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

题源:acwing

1473. A + B 格式

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

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

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

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

输入样例:
-1000000 9

输出样例:
-999,991

#include <iostream>
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 <iostream>
using namespace std;
int main(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值