PAT 1001
难点:
- 从高到底输出,从低到高三个一组。
- 和的结果为负数
- 输出逗号
我的解法:
- 单独处理负号
- 单独处理和为0的情况
- 计算位数,然后从高位依次取模。
#include<iostream>
#include<cmath>
using namespace std;
int main(){
int a, b;
while(scanf("%d%d", &a, &b) == 2){
int sum = a + b;
if (sum < 0){
printf("-");
sum = -sum;
}
int sum1 = sum;
if (sum == 0) printf("0");
int count = 0;
while(sum1){
count++;
sum1 /= 10;
}
int base = pow(10, count-1);
for(int i = 1; i <= count; i++){
int temp = sum / base;
sum %= base;
base /= 10;
printf("%d", temp);
if(((count - i) % 3) == 0 && (count - i)) printf(",");
}
}
return 0;
}
大的整数分位数输出的时候,最好将整数转换为字符串,方便操作。
- to_string()
// g++ 1001_string.cpp -std=c++11
#include<iostream>
#include<string>
using namespace std;
int main(){
int a, b;
cin >> a >> b;
string s = to_string(a + b);
int len = s.length();
for(int i = 0; i < len; i++){
cout << s[i];
if (s[i] == '-') continue;
if((i+1) % 3 == len % 3 && i != len-1) cout << ",";
}
return 0;
}