既然只有
3
,
5
,
7
3,5,7
3,5,7 组成,那么只需要枚举每个位为
3
,
5
,
7
3,5,7
3,5,7 就行了,设
x
x
x 为
n
n
n 的位数最多枚举
3
x
3^x
3x 次,用一个 dfs
搜索就行了
#include<iostream>
#define int long long
using namespace std;
int n, ans;
void dfs(int x, int f) {
if (x > n) return;
if (f == 7) ans++;
dfs(x * 10 + 3,f | 4);
dfs(x * 10 + 5,f | 2);
dfs(x * 10 + 7,f | 1);
}
signed main() {
cin>>n;
dfs(0,0);
cout << ans;
return 0;
}
有人可能要问 f
是干嘛的?其实他是用来判断是否
3
,
5
,
7
3,5,7
3,5,7 全在里面