PAT 1001 A+B 解题报告

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]);
    }
  • 提交记录截图

PAT 1001 A+B 解题报告


附:该页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
上一篇:PAT 1001 害死人不偿命的(3n+1)猜想 (15)(C++&JAVA&Python)


下一篇:mac 命令操作