题意:good number 的定义是只有4,和 7组成 ,给你一个 good number ,问你它是第几个good number。
解题思路:预处理位数为k 的个数,然后再枚举n的位数,如果这一位为 7 那么答案就要加上 这一位为4的情况数。
解题代码:
1 // File Name: b.cpp 2 // Author: darkdream 3 // Created Time: 2015年04月15日 星期三 00时46分48秒 4 5 #include<vector> 6 #include<list> 7 #include<map> 8 #include<set> 9 #include<deque> 10 #include<stack> 11 #include<bitset> 12 #include<algorithm> 13 #include<functional> 14 #include<numeric> 15 #include<utility> 16 #include<sstream> 17 #include<iostream> 18 #include<iomanip> 19 #include<cstdio> 20 #include<cmath> 21 #include<cstdlib> 22 #include<cstring> 23 #include<ctime> 24 #define LL long long 25 26 using namespace std; 27 char str[100]; 28 int len ; 29 LL sum[15]; 30 int main(){ 31 scanf("%s",str); 32 int len = strlen(str) ; 33 LL ans=0 ; 34 LL tmp = 1; 35 for(int i = 1;i <= 9 ;i ++) 36 { 37 tmp *= 2; 38 sum[i] = sum[i-1] + tmp ; 39 } 40 ans = sum[len-1]; 41 for(int i =0 ;i < len;i ++) 42 { 43 if(str[i]== '7') 44 { 45 ans += 1 << (len-i-1); 46 } 47 } 48 printf("%lld ",ans+1); 49 return 0; 50 }