PTA(1001)-17
解答:
我的思路是将这个数逐位分离放到stack容器(栈)中,再利用先进后出的特性进行打印,注意打印时将前面的几位特殊处理(如99,123,234特殊处理前面的99两个数字)
#include<iostream>
#include<stack>
using namespace std;
#define ll long long
int main() {
ll a, b;
cin >> a >> b;
ll sum = a + b;
if(sum==0){
cout<<0;
return 0;
}
stack<int> S;
if (sum < 0) sum = -sum, cout << "-";
while (sum) {
S.push(sum % 10);
sum /= 10;
}
int j = S.size();
int k = j % 3;//特殊处理前面的数字
for (int i = 1; i <= j; i++) {
cout << S.top();
S.pop();
if (i == k) { cout << ","; continue; }//输出了特殊位置的逗号就跳出本次循环,否则i-k=0也会输出一次逗号
if ((i - k)%3==0 && (i != j)) cout << ",";
}
return 0;
}