【快乐PAT】PAT1001总结

该博客详细介绍了PAT1001题目的解决方案,涉及整数a和b的加法,并按特定格式输出结果。文章讲解了如何使用C++进行计算,特别强调了在每三位用逗号分隔的处理,以及如何利用%和/操作确保数字正确格式化。此外,还提及了代码中的关键点,如%03d的用途,以及针对不同数值范围的处理策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目(点我)

在这里插入图片描述

代码与解析

求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ə] 逗号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

农民真快落

我琢磨着也没人给我打赏呀。。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值