您的位置:首页 > 其它

PAT甲级-1001. A+B Format (20)逗号分隔

2018-02-17 21:21 519 查看

1001. A+B Format (20)

时间限制400 ms
内存限制65536 kB
代码长度限制16000 B
判题程序Standard作者CHEN, Yue
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).InputEach input file contains one test case. Each case contains a pair of integers a and b where -1000000 <= a, b <= 1000000. The numbers are separated by a space.OutputFor each test case, you should output the sum of a and b in one line. The sum must be written in the standard format.Sample Input
-1000000 9
Sample Output
-999,991
计算A+B的值,结果的每3个数位用一个逗号分隔开。#include<bits/stdc++.h>
using namespace std;
#define MAXN 1000010
#define INF 0xfffffff
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("F:/cb/read.txt","r",stdin);
//freopen("F:/cb/out.txt","w",stdout);
#endif
ios::sync_with_stdio(false);
cin.tie(0);
int a,b,ans,i,j,cnt=0;
bool flag=true;//正负标志
cin>>a>>b;
ans=a+b;
//cout<<"ans="<<ans<<endl;
if(ans<0) flag=false,ans=abs(ans);
char s[MAXN],c[MAXN];
while(ans>0)//int转字符串
{
s[cnt++]=char(ans%10+'0');
ans/=10;
}
if(ans==0) c[0]='0';
cnt=0;
for(i=strlen(s)-1; i>=0; --i)
c[cnt++]=s[i];
//cout<<"c="<<c<<endl;
int len=strlen(c);
int temp=len/3;
if(len%3==0) --temp;//逗号个数
//cout<<"len="<<len<<endl;
cnt=0;
if(!flag) cout<<"-";
for(i=0; i<len-3*temp; ++i)
cout<<c[i];
if(temp>0)
{
cout<<",";
for(j=i; j<len; ++j)
{
if(cnt==3)
{
cnt=0;
cout<<",";
}
cout<<c[j];
++cnt;
}
}
cout<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: