1.题目描述:点击打开链接
2.解题思路:本题要求找出所给的幸运数的下标。本题类似于紫书上的一道例题ugly number。利用BFS即可解决。首先将4,7入队列,每次出队列后,将数字添加到set,同时将它们的末尾分别添加是4,7后得到新的幸运数入队列即可。上述过程打表后,直接输出即可。
3.代码:
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<algorithm> #include<string> #include<sstream> #include<set> #include<vector> #include<stack> #include<map> #include<queue> #include<deque> #include<cstdlib> #include<cstdio> #include<cstring> #include<cmath> #include<ctime> #include<functional> using namespace std; #define INF 100000000 #define For(i,n) for(int i=0;i<(n);i++) typedef long long ll; const int N = 1000000000 + 5; set<ll>a; void init() { int cnt = 1; queue<ll>q; q.push(4); q.push(7); while (!q.empty()) { ll u = q.front(); q.pop(); if (u > 1000000000)break; a.insert(u); ll u1 = u * 10 + 4, u2 = u * 10 + 7; q.push(u1); q.push(u2); } } int main() { //freopen("t.txt", "r", stdin); ll n; init(); while (~scanf("%I64d", &n)) { set<ll>::iterator it; it = a.find(n); cout << distance(a.begin(), it) + 1 << endl; } return 0; }
时间: 2024-10-07 18:54:55