题目描述
请你统计,$[1,n]$ 范围内一共有多少个正整数满足其十进制表示不含 $4$ 和 $7$ 以外的数字。
样例
输入数据:
4
输出数据
1
思路讲解:
暴力dfs即可,存一下当前遍历到的变量,如果大于 $n$ 就 return
,否则继续搜索。
对于下一步只有两种可能,一种是在末尾添加一个 $4$,另一种则是在末尾添加一个 $7$。
C++ 代码
#include <bits/stdc++.h>
using namespace std;
long long n;
int tot = 0;
void dfs(long long m) {
if (m > n) {
return;
}
tot++;
dfs(m * 10 + 4);
dfs(m * 10 + 7);
}
int main() {
cin >> n;
dfs(4);
dfs(7);
cout << tot << "\n";
return 0;
}
虽然我认为二分更快,但是点了
嗯,感谢!
我也这么想
嗯