您的位置:首页 > 其它

PAT (Advanced) 1001. A+B Format (20)

2017-09-18 23:18 459 查看
原题:1001. A+B Format (20)

解题思路:

1.将数字直接转换成反向的字符串,在适当位置加入逗号即可;

2.字符串从0开始计数,逗号位置分别为 3, 7,11 , 15…… 可发现对每个逗号出现的位置  i   ,有 i % 3 在 0, 1, 2 三个数间循环,以此添加逗号即可

3.0 要特殊处理;

C++代码如下:

#include<cstdio>
#include<algorithm>
using namespace std;
char num[20];
int trans(int a)
{
int i = 0;
int x = 0;
if(a == 0)
num[i++] = '0';
while(a > 0)
{
if(i % 4 == x && i != 0)
{
x++;
x = x % 3;
num[i++] = ',';
}
num[i++] = a % 10 + '0';
a = a / 10;
}
return i;
}
int main()
{
int m, n;
while(scanf("%d%d", &m, &n) != EOF)
{
int sum = m + n;
int len = trans(abs(sum));
if(sum < 0)
printf("-");
for(int i = len - 1; i >= 0; i--)
{
printf("%c", num[i]);
}
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: