题目描述:
请你统计,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;
}