1001. A+B Format (20)
2017-10-25 14:00
344 查看
1. 原题链接
1001. A+B Format2. 理解题目
给出数字a,b,求a+b并从右往左每3个数字用逗号隔开
3. 解题思路
[思路1]
先求出数字c,如果是负数先输出-号并对c取负变正,然后不断求余并保存在一个新数组a中; 假设c=2378562,我们知道结果应该是 2,378,562,对应a[ ]内容如下:
a[0] | a[1] | a[2] | a[3] | a[4] | a[5] | a[6] |
---|---|---|---|---|---|---|
2 | 6 | 5 | 8 | 7 | 3 | 2 |
[思路2]
因为a,b不超过10,所以相加的结果不超过7位数字,所以需要添加逗号的情况只有当c是7位或者4位时,其他情况直接输出即可;
4. AC代码
//【解法1】 #include<cstdio> const int maxn=10; int main(){ int a,b,c; scanf("%d%d",&a,&b); c=a+b; if(c<0) {printf("-");c=-c;} int ans[maxn];int bit=0; do{ ans[bit++]=c%10; //倒序存储0-(bit-1) c/=10; }while(c); for(int i=bit-1;i>=0;i--){ printf("%d",ans[i]); if(i%3==0&&i) printf(","); } } //【解法2】 #include<cstdio> const int maxn=10; int main(){ int a,b,c; scanf("%d%d",&a,&b);c=a+b; if(c<0) {printf("-");c=-c;} if(c>=1000000) printf("%d,%03d,%03d\n",c/1000000,c/1000%1000,c%1000); else if(c>=1000) printf("%d,%03d\n",c/1000,c%1000); else printf("%d\n",c); }
相关文章推荐
- ulink2 20脚转10脚
- set集合 // 生成10-20,之间的10个随机数,要求不能重复
- 1003. 我要通过!(20)
- 给一个字符串"20 78 9 -7 88 36 29"排序
- Python 学习入门(20)—— 循环
- 20+条软件开发的经验教训
- 20. Valid Parentheses
- 20.索引
- Fedora-20-x86_64-DVD.torrent
- 【springmvc+mybatis项目实战】杰信商贸-20.合同货物数和附件数
- MFC学习(20)MFC打开/保存文件对话框——CFileDialog之一
- 1042. 字符统计(20)
- Fedora 20 ISSUES
- Objective-C入门20:Block
- Item 20: 使用std::weak_ptr替换会造成指针悬挂的类std::shared_ptr指针
- 1007. 素数对猜想 (20)
- OCP-1Z0-新051-61题版本-20
- 【C语言】求1+2!+3!+...+20!的和
- C++入门(20):字符串
- PAT A1116 come on!Let's C (20)