0%

PAT A1001 A+B Format

题目链接

递归解法

不需要转换成字符,直接递归,从右到左,每3位输出一个’,’,进去的时候不打印,递归回来的时候打印,即从头开始打印,递归神技~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <cstdio>

void f(int n,int i) {
if (n / 10 != 0) {
i++;
f(n / 10,i);
i--;
}
printf("%d", n % 10);
if (i % 3 == 0&&i!=0) printf(",");
}
int main() {
int n, m, sum;
scanf("%d%d", &n, &m);
sum = n + m;

if (sum<0)
{
printf("-");
sum = -sum;
}
f(sum,0);
return 0;
}

字符串解法

将整数转为字符串,然后从头到尾遍历,当前位置加1对3取余等于字符串长度对3取余时即输处“,”。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main(){
int a,b,c,len;
cin>>a>>b;
c=a+b;
stringstream ss;
ss<<c;
string s=ss.str();
len=s.length();
for(int i=0;i<len;i++){
cout<<s[i];
if(s[i]=='-') continue;
if((i+1)%3==len%3&&i<len-1) cout<<",";
}
return 0;
}

本文标题:PAT A1001 A+B Format

文章作者:GavinYGM

发布时间:2020年08月23日 - 17:08

最后更新:2020年08月23日 - 17:08

原始链接:http://www.gavinygm.cn/2020/08/23/PAT-A1001-A-B-Format/

许可协议: 转载请保留原文链接及作者。