题目不贴了,解题实录思路如下:
1.输入式计算sum of digits. 然后取得每一位的数存放到一个string中逆序输出即可,算法复杂度O(1)
坑点:
切记1-9的英文单词拼写啊,把nine拼成night第四个测试点会报错的!!!!!!!
#include <iostream>
#include <vector>
#include <string>
#include <cstring>
using namespace std;
const char ans[10][7] = {"orez", "eno", "owt", "eerht", "ruof", "evif", "xis", "neves", "thgie", "enin"};
int main(void)
{
string n;
while(cin >> n)
{
int sum = 0;
string a;
/*input*/
for(int i = n.length() - 1; i >= 0; i--)
sum += (int)n[i] - '0';
/*output*/
a += ans[sum % 10];
sum = sum / 10;
while(sum > 0)
{
a += " ";
a += ans[sum % 10];
sum /= 10;
}
for(int i = a.length() - 1; i >= 0; i--)
cout << a[i];
cout << "\n";
}
return 0;
}