给定一个整数N (100位以下)
将每一位相加的总和再按位表示为英文
如
Input:
12345
1+2+3+4+5 = 15
output:
one five
#include<iostream>
#include<string>
#include<math.h>
using namespace std;
string format(int a){
switch(a){
case 1:
return "one";
case 2:
return "two";
case 3:
return "three";
case 4:
return "four";
case 5:
return "five";
case 6:
return "six";
case 7:
return "seven";
case 8:
return "eight";
case 9:
return "nine";
case 0:
return "zero";
}
}
int main(){
string s;
int sum = 0;
cin >> s;
int i = 0;
while(i < s.length()){
sum += s[i] - '0';
i++;
}
int w = (int)log10(sum);
if(sum == 0) cout << format(0);
while(w >= 0){
int res = sum / pow(10,w);
cout << format(res);
sum -= res* pow(10,w);
w--;
if(w>= 0) cout << " ";
}
return 0;
}
这段代码妙在使总位数w等于
int w = (int)log10(sum)
然后按位顺序输出,这样就不用倒着拆分再用个栈装着了
这题是甲级最简单没有之一