PTA1001 A+B Format
问题描述:
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).
Input Specification:
Each input file contains one test case. Each case contains a pair of integers a and b where −10^6 ≤a,b≤10^6. The numbers are separated by a space.
Output Specification:
For 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
题目分析:
将加减法的结果化成带有格式的答案,分条讨论。
每条内容基本一致,把高位分出来看末位。
代码如下:
#include<iostream>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
int c=a+b;
if(abs(c)>=1000000)
{
cout<<c/1000000<<',';
int r=c/1000000;
c-=r*1000000;
if(abs(c)>999)//处理x,xxx,xxx类
{
if (abs(c)>99999)
{
cout<<c/1000<<",";
int r=c/1000;
c=abs(c)-abs(r)*1000;
}
else if (abs(c)>9999)
{
cout<<'0'<<c/1000<<",";
int r=c/1000;
c=abs(c)-abs(r)*1000;
}
else if (abs(c)>999)
{
cout<<"00"<<c/1000<<",";
int r=c/1000;
c=abs(c)-abs(r)*1000;
}
if (c>99)
{
cout<<c;
}
else if (c>9)
{
cout<<"0"<<c;
}
else
{
cout<<"00"<<c;
}
return 0;
}//以下处理x,000,xxx类
else if(abs(c)>99)
{
cout<<"000,"<<c/100;
int r=c/100;
c=abs(c)-abs(r)*100;
}
else if(abs(c)>9)
{
cout<<"000,0"<<c/10;
int r=c/10;
c=abs(c)-abs(r)*10;
}
else if(abs(c)>0)
{
cout<<"000,00"<<c;
int r=c;
c=abs(c)-abs(r);
}
else
{
cout<<"000,000";
}
}//高位截止
else//以下处理xxx,xxx类
{
if (abs(c)>999)
{
cout<<c/1000<<",";
int r=c/1000;
c=abs(a+b)-abs(r)*1000;
if (c>99)
{
cout<<c;
}
else if (c>9)
{
cout<<"0"<<c;
}
else
{
cout<<"00"<<c;
}
}//处理xxx类
else
{
cout<<c;
}
}
return 0;
}
总结
20分的题通过率并不高,写的时候没有在网上看其他代码,分条有些繁琐,但思路基本一致,有很多细节需要不断尝试。