开始做了很久做不出。。测试数据也只对了一半,无奈只能百度,http://163yescpk.blog.163.com/blog/static/141890288201011614935180/
看完后恍然大悟。。就是9进制转成10进制,而且大于4的位都要减1才能配成九进制。
#include <iostream> #include <string> using namespace std; string s; int main() { //freopen("C:/Users/Alfred/Desktop/1.txt", "r", stdin); while(cin >> s && s != "0") { int tmp; int k = 1; int i = s.size() - 1; tmp = s[i] - '0'; if(s[i] > '4') tmp--; for(i--; i >= 0; i--) { k *= 9; if(s[i] > '4') tmp += (s[i] - '0' - 1) * k; else tmp += (s[i] - '0') * k; } cout << s << ": " << tmp << endl; } return 0; }