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\n",res);
    }
    return 0;
} 

 

转载于:https://www.cnblogs.com/ToTOrz/p/6144215.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值