PAT 1001 A+B
代码链接:传送门
题目链接:传送门
-
题目简述:
- 给定两个值a,b;
- 范围-1000000 <= a, b <= 1000000;
- 按指定格式输出a+b的结果,例:-99,991;
-
解题思路:
-
一、明确范围
- a+b在正负两百万内;
- int够用,不用高精度;
-
二、明确格式
- 三位一起;
- 视最后采取的代码写法注意可能需要补零;
- 负号可以提前判定,相当于只要考虑正数;
-
三、采取措施:
- 计算a+b的结果c,处理掉负号;
- 按c按1000进制将结果存储在数组中;
- 输出最高位;
- 剩下的每位:输出一个 “,” 号,再输出该位(补零)
-
四、潜在问题:
- 视代码的具体实现方式可能在处理0的时候会出问题;
- 对应措施:打完代码特别观察一下0的情况,并手测数据即可;
-
五、提交后仍存在的bug
- 无;
-
-
源代码:
#include <cstdio>
int a,b,l,ans[10];
int main( )
{
for (scanf("%d%d",&a,&b); a+b<0; printf("-")) a=-a,b=-b;
for (a+=b,l=a==0; a; a/=1000) ans[++l]=a%1000;
for (printf("%d",ans[l]); --l; ) printf(",%03d",ans[l]);
} 提交记录截图
附:该页Markdown源码
# PAT 1001 A+B
- ### 代码链接:[传送门][2]
----
- ### 题目链接:[传送门][1]
- ### 题目简述:
- 给定两个值a,b;
- 范围-1000000 <= a, b <= 1000000;
- 按指定格式输出a+b的结果,例:-99,991;
- ### 解题思路:
- 一、明确范围
- a+b在正负两百万内;
- int够用,不用高精度;
- 二、明确格式
- 三位一起;
- 视最后采取的代码写法注意可能需要补零;
- 负号可以提前判定,相当于只要考虑正数;
- 三、采取措施:
- 计算a+b的结果c,处理掉负号;
- 按c按1000进制将结果存储在数组中;
- 输出最高位;
- 剩下的每位:输出一个 “,” 号,再输出该位(补零)
- 四、潜在问题:
- 视代码的具体实现方式可能在处理0的时候会出问题;
- 对应措施:打完代码特别观察一下0的情况,并手测数据即可;
- 五、提交后仍存在的bug
- 无;
- ### 源代码:
#include <cstdio>
int a,b,l,ans[10];
int main( )
{
for (scanf("%d%d",&a,&b); a+b<0; printf("-")) a=-a,b=-b;
for (a+=b,l=a==0; a; a/=1000) ans[++l]=a%1000;
for (printf("%d",ans[l]); --l; ) printf(",%03d",ans[l]);
}
- ### 提交记录截图
![](http://images2015.cnblogs.com/blog/871469/201601/871469-20160127113540879-1571266197.png)
[1]: http://www.patest.cn/contests/pat-a-practise/1001
[2]: https://github.com/TheSkyFucker/object-oriented/tree/master/1001