XidianOJ 1076 小W喜欢的数字

题目描述

大家都知道,小W是一名大帅哥,当然比起Light还是有点儿差距的!帅气的小W认为0-9这些数字,只有1,3,5是完美的。
欲问小W为什么,小W总是说“帅哥,是不需要解释的”.所以在帅哥小W的世界里,只有1,3,5这些数字或者是有1,3,5组合
而成的数字,比如13,35555等等。
那么现在问题来了,给你一个小W的世界里的数字,你能计算出它是第几小吗?
例如:1是第一小,3是第二小,(在小W的世界里是没有负数的,为什么呢?因为:帅哥,是不需要解释的)

输入

多组输入数据
对于每组数据,输入一个数,该数字的位数长度<35,且只包含1,3,5这三个数

输出

输出一行,求出该数字是小W世界里的第几小

--正文

类似10进制的读取,只不过变成特殊的3进制

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

char num[100]; 
int order[10];
long long res = 0;
int main(){
    order[1] = 1; order[3] = 2; order[5] = 3;
    while (scanf("%s",num) != EOF){
        res = 0;
        int len = strlen(num); int i;
        long long base = 1;
        for (i=len-1;i>=0;i--){
            int nownum = num[i] - '0';
            res += order[nownum] * base;
            base *= 3;
        }
        printf("%lld
",res);
    }
    return 0;
} 
原文地址:https://www.cnblogs.com/ToTOrz/p/6144215.html