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. day 88 Vue学习之八geetest滑动验证

      本节目录 一 geetest前端web中使用 二 xxx 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 geetest前端web中使用 下载gt文件,官网地址,下面我 ...

  2. MepReduce-开启大数据计算之门

    Hadoop MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算.早期的MapReduce(MR)框架简单明了,JobTracker作为MR框架的集中处理点,随着分布式系统集群 ...

  3. Scala(一):函数、流程控制、参数

    Function:函数函数的定义: def 函数名(参数):返回类型=函数实现体 eg:def abs(x:Long) : Long = if(x >= 0) x else -x 你必须给出所有 ...

  4. 10.14 (上午)开课一个月零十天 (PHP环境搭建)

    一.修改APACHE的监听端口 2 1.在界面中选apache,弹出隐藏菜单选项,打开配置文件httpd.conf; 2.找到Listen 80 和 ServerName localhost:80; ...

  5. 【转载】COM 组件设计与应用(十七)——持续性

    原文:http://vckbase.com/index.php/wv/1264.html 一.前言 我们写程序,经常需要实现这样的需求: 例一.程序运行产生一个窗口,用户关闭的时候需要记录窗口的位置, ...

  6. Keepalived高可用集群

    一.服务介绍 keepalive起初是专为LVS设计的,专门用来监控LVS集群系统红各个服务节点的状态,后来又加入了VRRP的功能,因此不了配合LVS服务外,也可以作为其他服务(nginx,hapro ...

  7. React Native开启实时重载(Enable live Reload)

    传统的原生应用开发中,每一次修改都需要重新编译. 但在 RN 中你只需要刷新一下 JavaScript 代码,就能立刻看到变化. 操作 1.安卓模拟器 按下Ctrl + M,Enable live R ...

  8. 大数据中HBase集群搭建与配置

    hbase是分布式列式存储数据库,前提条件是需要搭建hadoop集群,需要Zookeeper集群提供znode锁机制,hadoop集群已经搭建,参考 Hadoop集群搭建 ,该文主要介绍Zookeep ...

  9. 第四篇 HTTP请求返回状态码收集及解释

    [转载]https://blog.csdn.net/wangsen2235068/article/details/8081274 当用户试图通过 HTTP 访问一台正在运行 Internet 信息服务 ...

  10. 使用html2canvas将html标签转化为图片

    有些时候我们无法用常规的截图工具截取网页内容,这时可以尝试以下方法: 1.首先允许跨域,Chrome浏览器可以在快捷方式->属性->目标栏里添加: --disable-web-securi ...