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世界里的第几小
样例输入
13511
样例输出
1234
提示
请采用较快的IO方式
来源
题目类型:3进制(类似)
算法分析:将’1’、’3’和’5’分别看作是1、2和3,然后将输入的数转换为10进制数就是答案,注意使用”%I64d”输出可能会OLE,这里使用”%lld”输出long long型变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
#include <set> #include <bitset> #include <list> #include <map> #include <stack> #include <queue> #include <deque> #include <string> #include <vector> #include <ios> #include <iostream> #include <fstream> #include <sstream> #include <iomanip> #include <algorithm> #include <utility> #include <complex> #include <numeric> #include <functional> #include <cmath> #include <ctime> #include <climits> #include <cstdarg> #include <cstdio> #include <cstdlib> #include <cstring> #include <cctype> #include <cassert> #define lson rt << 1, l, m #define rson rt << 1 | 1, m + 1, r using namespace std; const int INF = 0x7FFFFFFF; const int MOD = 1e9 + 7; const double EPS = 1e-10; const double PI = 2 * acos (0.0); const int maxn = 100 + 1666; char ans[maxn]; int temp[maxn]; int main() { // freopen ("aaa.txt", "r", stdin); while (scanf ("%s", ans) != EOF) { int len = strlen (ans); for (int i = 0; i < len; i++) { if (ans[i] == '1') temp[i] = 1; else if (ans[i] == '3') temp[i] = 2; else if (ans[i] == '5') temp[i] = 3; } long long tot = 0, wei = 1; for (int i = len - 1; i >= 0; i--) { tot += temp[i] * wei; wei *= 3; } printf ("%lld\n", tot); } return 0; } |
- zoj1061:下一篇 »