Think:
1知识点:“进制转换”
2思考:
初始计数位权
int blue[] = {0, 1, 2, 4, 5, 6, 7, 9};
回溯位权
int red[] = {0, 1, 2, 0, 3, 4, 5, 6, 0, 7};
以下为Accepted代码
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int red[] = {0, 1, 2, 0, 3, 4, 5, 6, 0, 7};
int main(){
int u, x, i, tp, link[14];
while(scanf("%d", &x) && x){
tp = 0;
u = x;
while(x){
link[tp++] = x%10;
x /= 10;
}
int sum = 0, p = 1;
for(i = 0; i < tp; i++){
sum += red[link[i]]*p;
p *= 8;
}
printf("%d: %d\n", u, sum);
}
return 0;
}