千分位
内存限制: 256 Mb时间限制: 1000 ms
题目描述
给定一个十进制正整数,请为这个整数每隔三位数字添加一个逗号,注意这个整数可能很长。
输入格式
- 单个整数 nn
输出格式
- 一个含有千分位的整数表示
数据范围
- 50%50% 的数据,1≤n≤1091≤n≤109
- 100%100% 的数据,1≤n≤1010001≤n≤101000
样例数据
输入:
1234567
输出:
1,234,567
题解:该问题难点是如何从高位到低位进行每隔三位一个逗号“,”的计算。因为输出是从高位到低位输出,但是计算逗号要从低位到高位,所以要找到规律,发现先要用整个的字符串的长度和3求余的结果作为从高位计算的第一个逗号的位置,之后就是每隔三个进行一次的输出,用一个计数count来循环三个的计数,注意的是最后一个数如果是最后以为是不需要再输出逗号的。代码如下:
#include<string> #include<iostream> using namespace std; string a; int main(){ cin>>a; if(a.size()<=3){ cout<<a; return 0; } int start=a.size()%3-1; if(start>=0){ for(int i=0;i<=start;i++){ cout<<a[i]; } cout<<","; } int count=0; for(int i=start+1;i<a.size();i++){ cout<<a[i]; count++; if(count==3&&i!=a.size()-1){ cout<<","; count=0; } } }代码ac通过