AtCoder&Luogu[ABC114C] 755题解

8 篇文章 0 订阅
7 篇文章 0 订阅
该博客探讨了一种利用深度优先搜索(DFS)算法来枚举由数字3,5,7组成的数的方法。作者通过设定变量f来判断这些数字是否都出现,并给出了C++代码实现。程序通过递归地添加3,5,7到当前数字并更新f的状态来找出所有可能的组合,最终输出符合条件的数的个数。
摘要由CSDN通过智能技术生成

既然只有 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 全在里面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值