题目(点我)

代码与解析
求a+b,难点在每三位用,分割 如1,001,500
详细题解写在下面AC代码注释中了,核心知识点是利用%和/分割数值和 %03d不满3位自动补0
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cmath>
using namespace std;
/**
* PAT 1001
* a和b在+1,000,000和-1,000,000之间
* 这意味着二者之和在-2,000,000到+2,000,000之间
* 可以根据和的大小分段考虑:
* ·如果|sum|∈[0,1k),无需逗号,直接输出
* ·如果|sum|∈[1k,100w),就加个逗号,利用%和/分割数值。
* ·如果|sum|∈[100w,200w],加两个逗号,利用%和/分割数值。
*
* WARN:以1050为例,如果输出1050/1000,1050%1000 则结果为1,50而不是1,050,
* 因此要用%0md的格式在未满3位时自动在前面补0
*
*/
int main(){
int a,b;
cin>>a>>b;
int c=a+b;
if(abs(c)>=1000000){
//cout<<c/1000000<<","<<abs(c)%1000000/1000<<","<<abs(c)%1000;
printf("%d,%03d,%03d",c/1000000,abs(c)%1000000/1000,abs(c)%1000);
}else if(abs(c)<1000){
cout<<c;
}else{
printf("%d,%03d",c/1000,abs(c)%1000);
}
return 0;
}
英语积累
digit 数字
comma 英[ˈkɒmə] 逗号
该博客详细介绍了PAT1001题目的解决方案,涉及整数a和b的加法,并按特定格式输出结果。文章讲解了如何使用C++进行计算,特别强调了在每三位用逗号分隔的处理,以及如何利用%和/操作确保数字正确格式化。此外,还提及了代码中的关键点,如%03d的用途,以及针对不同数值范围的处理策略。
6万+

被折叠的 条评论
为什么被折叠?



