Github : git@github.com:Circlecos/object-oriented.git
PDF Of Markdown : "1001. A+B Format (20)" 解题报告

问题描述

Calculate a + b and output the sum in standard format -- that is, the digits must be separated into groups of three by commas (unless there are less than four digits).

解题思路

联想到以前做过的一题字符串替换的题目——"将字符串中特定字符替换并输出新字符串",当时TLE是因为直接对原字符串进行操作然后输出。优化是直接输出不修改原字符串了。
所以这题我也采取一样的思路,直接在输出的时候加入逗号。
那么下一个问题是数字要转换成"字符串"(类比),简单啊,各种/10 %10 就好了。
但是有点浪费,因为输出的时候还需要计算现在是第几位
所以我想到/1000是不是直接取三位呢
试验了一下然后就没有然后了(下一个.jpg(雾

源代码

 #include <stdio.h>
 #include <math.h>
 #define N 3
 int main(void)
 {
     int a,b,sum,q,s[5],i,n,wid;
     scanf("%d %d",&a,&b);
     sum=a+b;
     if (sum<0) {printf("-");sum=abs(sum);}
     n=0;wid=pow(10,N);
     while (sum>=wid)
     {
         q=sum%wid;
         s[n]=q;
         sum/=wid;
         n++;
     }
     s[n]=sum;
     for (i=n;i>=0;i--)
     {
         if (i!=n) printf("%0*d",N,s[i]);
         else printf("%d",s[i]);
         if (i!=0) printf(",");
     }
     return 0;
 }

调试

第一个需要调整的是最后剩下的几位数的处理,开始的时候是直接 printf("%d,",sum) ,然后和小于1000的数据点就出事了
然后调成了现在的样子
然后出现了"1000 10"数据点变成“1,10"的问题 然后加上了%03d
然后上线测试 一个WA

这时候的代码是 while (sum>wid)
只有一个WA基本是特殊数据点了
然后看到这句就想到了1000
果然输出并不是"1,000" 而是"1000"
改掉 AC

其他

嘛没用IDE的debug因为这些bug并不是很难找
然后按习惯#define N 3却发现了一个问题
printf("%03d",s[i]);这个3怎么改(晕(◎﹏◎)
查了下 于是有个现在的代码hhhh(其实之前没找到刚刚找到hhhhhhhh
然后傻傻的push完了再commit --amend导致github变成了那样
恩 就这样

"1001. A+B Format (20)" 解题报告的更多相关文章

  1. 1001.A+B Format (20) 解题

    代码入口(https://github.com/NSDie/object-oriented) 这题的解题思路我有两个: 第一个是两个数字相加然后判断位数,因为题目限制了范围1000000的绝对值以内嘛 ...

  2. (2016.2.2)1001.A+B Format (20)解题思路

    https://github.com/UNWILL2LOSE/object-oriented 解题思路 目标: *首先运算要求实现输入2个数后,输出类似于银行的支票上的带分隔符规则的数字. 代码实现思 ...

  3. 1001.A+B Format (20)解题描述

    1. 作业链接 2. 解题的思路过程 首先这是道简单的计算题,要求计算a+b的值. 看初值条件,将a和b的取值限制在一个区间内. 本题难点和重点是如何把输出值形成题目要求的格式. 因为负数可通过在前面 ...

  4. 关于‘1001.A+B Format (20)’的解题报告

    1001.A+B Format(20) 首先要感谢一下指导我github上传问题的小伙伴们,捣腾了一整天我终于摸到了一点门路,真的谢谢你们. 小豪的github 问题描述: Calculate a + ...

  5. PAT----1001. A+B Format (20)解题过程

    1001. A+B Format (20) github链接 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B Calculate a + b and output t ...

  6. PAT-PAT (Advanced Level) Practise 1001. A+B Format (20) 【二星级】

    题目链接:http://www.patest.cn/contests/pat-a-practise/1001 题面: 1001. A+B Format (20) Calculate a + b and ...

  7. 1001. A+B Format (20) (%0nd)

    1001. A+B Format (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Calculate ...

  8. 1001.A+B Format (20)代码自查(补足版)

    1001.A+B Format (20)代码自查(补足版) 谢谢畅畅酱的提醒,发现了代码中的不足,把变量名更改成更合理的名字,并且把注释也换成英文啦! 栋哥提供的代码自查的方式也帮助了我发现很多代码中 ...

  9. PAT 甲级 1001 A+B Format (20)(20 分)

    1001 A+B Format (20)(20 分) Calculate a + b and output the sum in standard format -- that is, the dig ...

随机推荐

  1. Windows 的 Oracle Data Access Components (ODAC)

     下载 x64bit https://www.oracle.com/technetwork/cn/database/windows/downloads/index.html 适用于 Windows 的 ...

  2. Linux下onvi支持h265环境的的搭建:gsoap的安装及生产.c .h文件

     1. 下载gsoap  :http://www.genivia.com/products.html#notice,既Open Source gSOAP版本,并解压进入目录安装,configure后面 ...

  3. 网格布局(GridLayout) 行数与列数

    1.如果网格布局对象未指定具体的“行数”和“列数”,那么它将拥有1行和动态的列数. import java.awt.Button; import java.awt.Frame; import java ...

  4. Error message: “'chromedriver' executable needs to be available in the path”

    下载一个chromedriver(https://chromedriver.storage.googleapis.com/index.html?path=2.44/) 直接把chromedriver. ...

  5. uboot的静默编译、指定编译目录、多核编译

    最近在移植uboot,发现每次看源代码,都有编译留下的.o 等各种文件,在百度中,找到了解决方法. 在顶层的Makefile文件中,大概80多行,有这么几句注释, # kbuild supports ...

  6. u-boot-1.1.6第2阶段入口函数start_armboot分析

    学习目标: 1.分析u-boot-1.1.6第2阶段入口函数void start_armboot (void),熟悉该函数所实现的功能 2.为后面能够掌握u-boot-1.1.6如何启动内核过程打下基 ...

  7. 33 -jQuery 属性操作,文档操作(未完成)

  8. 3-1 实现简单的shell sed替换功能

    1.需求 程序1: 实现简单的shell sed替换功能 file1 的内容copy到file2 输入参数./sed.py  $1  $2 $1替换成$2 (把a替换成% ) 2.个人思路 open ...

  9. HDU 6191 2017ACM/ICPC广西邀请赛 J Query on A Tree 可持久化01字典树+dfs序

    题意 给一颗\(n\)个节点的带点权的树,以\(1\)为根节点,\(q\)次询问,每次询问给出2个数\(u\),\(x\),求\(u\)的子树中的点上的值与\(x\)异或的值最大为多少 分析 先dfs ...

  10. pycharm如何回到过去某个时间

    在编写代码是,我们可能会写错代码,或者是误删某个文件,那么问题来了,如何回到过去的某个时间段,来弥补我们犯下的错呢? 1.如果是恢复删除的文件则右击之前文件所在的文件夹 2.右击文件夹的显示效果如图 ...