- 刚刚看到这题的时候吓了一下,自认为这个位数是可以无限长的,所以小编我就陷入了一个困境,然后想到把一位一位除出来用字符串存好,然后再每隔三位加一个“,”,可是问题又来了,万一位数是三的倍数那么第一位上的“,”要咋去…然后身为菜鸟的我就去网上搜了一下,果然又很多解决方案然后就调了一个易懂的。
- 首先我没有看到所以这个最后位数是不会是无限的…(?)
- 然后又发现一个坑点,就是它可能是七位数的可能性要特别考虑一下
- 最后一个发现就是,它本身就是要三位三位操作的,那么我就没有必要以为一位取出来
- 分三种情况考虑:
- 1.total<1000&&total>-1000 不用加“,”直接输出
- 2.total>=1000000||total<=-1000000 将数据分成三部分
- 3.else…(小编比较懒相信大家可以)分将数据成两部分
- 一下附上ac代码
#include<stdio.h>
int main()
{
int a,b;
int total;
scanf("%d %d",&a,&b);
total=a+b;
if(total<1000&&total>-1000){
printf("%d\n",total);
}
else if(total>=1000000||total<=-1000000)
{
int l1=total/1000/1000;
int l2=total/1000%1000;
int l3=total%1000;
if(l2<0){
l2=-l2;
}
if(l3<0){
l3=-l3;
}
printf("%d,%03d,%03d\n",l1,l2,l3);
}
else{
int l1=total/1000;
int l2=total%1000;
if(l2<0){
l2=-l2;
}
printf("%d,%03d\n",l1,l2);
}
return 0;
}