51nod 1109 01组成的N的倍数
来源:互联网 发布:seo关键词优化工具 编辑:程序博客网 时间:2024/05/20 08:21
这个题我是用广搜做的,话题里面的抽屉原理没有想到怎么做。
搜索的时候节点记录两个值,一个是余数,一个是节点的编号,因为这是一颗二叉树,节点编号的二进制形式,刚好是我们需要的结果。对于余数,还要开一个数组去重。
#include<cstdio>#include<queue>#include<iostream>using namespace std;const int maxn = 1e6 + 5;bool f[maxn];int n;struct p{ long long value, num;}a;void print(long long k){ if(k <= 1) printf("%lld", k); else{ print(k / 2); printf("%lld", k % 2); }}void bfs(){ a.value = 1; a.num = 1; queue<p> q; q.push(a); while(!q.empty()){ long long t = q.front().value; long long nu = q.front().num; q.pop(); int s = t * 10 % n; if(s == 0){ print(nu * 2); return; }else{ if(f[s] == 0){ f[s] = 1; a.value = s; a.num = nu * 2; q.push(a); } } s = (t * 10 + 1) % n; if(s == 0){ print(nu * 2 + 1); return; }else{ if(f[s] == 0){ f[s] = 1; a.value = s; a.num = nu * 2 + 1; q.push(a); } } }}int main(){ scanf("%d", &n); bfs(); return 0;}
阅读全文
0 0
- 51nod-1109 01组成的N的倍数(宽搜)
- 【51Nod 1109】01组成的N的倍数
- 51nod 1109 01组成的N的倍数+
- 51NOD 1109 01组成的N的倍数
- 51nod 1109 01组成的N的倍数
- 51nod 1109 01组成的N的倍数(bfs)
- 51nod 1109 01组成的N的倍数
- 51 nod 1109 01组成的N的倍数
- 51nod 1109 01组成的N的倍数
- 51Nod 1109 01组成的N的倍数
- 51Nod-1109-01组成的N的倍数
- 51nod 01组成的N的倍数(bfs)
- 51Nod-1109-01组成的N的倍数
- 51nod 1109 01组成的N的倍数【Bfs+同余定理剪枝】好题!
- 51nod 1109 01组成的N的倍数 【dfs+剪枝+vector】
- 51nod 1109 01组成的N的倍数 (bfs)
- 51nod 1109 01组成的N的倍数(宽搜+剪枝)
- 51Nod-01组成的n的倍数(广搜)
- POJ-2060-Taxi Cab Scheme 二分图匈牙利算法 裸题
- Spring思维导图
- API Hook总结之三
- 跳台阶 java实现
- SnailApp项目---路由框架搭建
- 51nod 1109 01组成的N的倍数
- 误删linux下passwd目录导致进不去系统
- 选择排序
- HDU
- DBA必备脚本--检查失败的作业
- CloudStack相关技术-Zone
- 剑指offer面试题目:第一个只出现一次的字符
- 实现将字符串右循环n位
- 1002. A+B for Polynomials (25)