有点颠的一个测试点,记录一下
测试点二,是看了一些AC代码才写出来的,至于原理我也不知道,就当多见识一点题目测试点的可能性吧
#include<iostream>
#include<cstring>
using namespace std;
int main() {
string a;
char b[10] = { 'S','B','Q','W','S','B','Q','Y' };
char c[10] = { 'a','b','c','d','e','f','g','h','i','j' };
char d[20];
int index_d = 0, index_b = 0;
cin >> a;
int count = 0;
//计算位数
for (int i = 0; a[i] != '\0'; i++) {
count++;
}
//处理最小个位数
if (count == 1 && a[0] - '0' == 0) {
cout << 'a';
return 0;
}
//转换
for (int i = count-1; i >= 0; i--) {
int temp = (int)a[i] - '0';
//最后一个零且不在最后一个时输出
if (temp == 0) {
if(i != count - 1 && a[i + 1] - '0' != 0)
d[index_d++] = c[temp];
//大于万位时,连续多零,要输出万的单位
if (index_b == 3 && a[i - 1] - '0' == 0) {
d[index_d++] = 'W';
}
}
//正常数字情况
else
d[index_d++] = c[temp];
//单位(有零时无单位)
if (i != 0 && a[i-1]-'0' != 0) {
d[index_d++] = b[index_b];
}
index_b++;
}
//逆序输出
for (int i = index_d - 1; i >= 0; i--) {
cout << d[i];
}
return 0;
}