poj 1426 Find The Multiple (bfs 搜索)
Time Limit: 1000MS | Memory Limit: 10000K | |||
Total Submissions: 18012 | Accepted: 7297 | Special Judge |
Description
digits.
Input
Output
Sample Input
- 2
- 6
- 19
- 0
Sample Output
- 10
- 100100100100100100
- 111111111111111111
Source
- #include <iostream>
- #include <queue>
- #include <cstdio>
- using namespace std;
- void bfs(int n)
- {
- queue<__int64>q;//这里后面的数据可能会有大的,所以用个64位的就够了
- q.push(1);
- while(!q.empty())
- {
- __int64 x;
- x=q.front();
- q.pop();
- if(x%n==0)//能够整除就直接输出
- {
- printf("%I64d\n",x);
- return ;
- }
- q.push(x*10);//把x的10的倍数入队。
- q.push(x*10+1);
- }
- }
- int main()
- {
- int n;
- while(scanf("%d",&n)&&n)
- {
- bfs(n);
- }
- return 0;
- }
自己用数组模拟队列写了一下;貌似效率比stl好了一些;
- #include <cstdio>
- #include <cstring>
- long long q[2000000];
- void bfs(int n)
- {
- int front=0;
- int rear=0;
- q[front]=1;
- rear++;
- long long temp;
- while(rear>front)
- {
- temp=q[front];
- if(temp%n==0)
- {
- break;
- }
- temp*=10;
- q[rear]=temp;
- rear++;
- q[rear]=temp+1;
- rear++;
- front++;
- }
- printf("%lld\n",temp);
- }
- int main()
- {
- int n;
- while(scanf("%d",&n)&&n)
- {
- bfs(n);
- }
- return 0;
- }
在网上还看到了大神的代码用了同余取模定理,还是有点没看懂。还有的直接用满二叉树模拟的队列。
(a*b)%n = (a%n *b%n)%n
(a+b)%n = (a%n +b%n)%n
再贴一段pl大牛关于此题的分析思路。以学习:
要m整除n,那么能够用对n的余数来表示当前的状态。
搜到一个余数为0的状态就能够了。
直接bfs出去。
假设当前的余数是r。添在当前答案后面的数为,k
那么新的余数。也就是新的状态为:
( r * 10 + k ) % n 。
这样最多200个状态,判重一下。能够非常快出解。
大牛的代码:
- #include<iostream>
- using namespace std;
- int a[524300],i,n;
- int main(){
- while(cin>>n){
- if (!n) break;
- i=1; a[1]=1%n;
- while(a[i]){i++; a[i]=(a[i/2]*10+i%2)%n;}
- n=0; while(i){a[n++]=i%2;i>>=1;}
- while(n--) cout<<a[n]; cout<<endl;
- }
- return 0;
- }
这原来也是bfs,直接用一个满二叉树实现(左儿子是0,右儿子是1);
还是要多学习大神们的代码~
poj 1426 Find The Multiple (bfs 搜索)的更多相关文章
- POJ 1426 Find The Multiple --- BFS || DFS
POJ 1426 Find The Multiple 题意:给定一个整数n,求n的一个倍数,要求这个倍数只含0和1 参考博客:点我 解法一:普通的BFS(用G++能过但C++会超时) 从小到大搜索直至 ...
- POJ - 1426 Find The Multiple(搜索+数论)
转载自:優YoU http://user.qzone.qq.com/289065406/blog/1303946967 以下内容属于以上这位dalao http://poj.org/problem? ...
- POJ 1426 Find The Multiple BFS
没什么好说的 从1开始进行广搜,因为只能包涵0和1,所以下一次需要搜索的值为next=now*10 和 next=now*10+1,每次判断一下就可以了,但是我一直不太明白我的代码为什么C++提交会错 ...
- poj 1426 Find The Multiple ( BFS+同余模定理)
Find The Multiple Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 18390 Accepted: 744 ...
- POJ.1426 Find The Multiple (BFS)
POJ.1426 Find The Multiple (BFS) 题意分析 给出一个数字n,求出一个由01组成的十进制数,并且是n的倍数. 思路就是从1开始,枚举下一位,因为下一位只能是0或1,故这个 ...
- DFS/BFS(同余模) POJ 1426 Find The Multiple
题目传送门 /* 题意:找出一个0和1组成的数字能整除n DFS:200的范围内不会爆long long,DFS水过~ */ /************************************ ...
- 广搜+打表 POJ 1426 Find The Multiple
POJ 1426 Find The Multiple Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 25734 Ac ...
- POJ 1426 Find The Multiple(寻找倍数)
POJ 1426 Find The Multiple(寻找倍数) Time Limit: 1000MS Memory Limit: 65536K Description - 题目描述 Given ...
- POJ 1426 Find The Multiple (DFS / BFS)
题目链接:id=1426">Find The Multiple 解析:直接从前往后搜.设当前数为k用long long保存,则下一个数不是k*10就是k*10+1 AC代码: /* D ...
随机推荐
- python--fnmatch
import fnmatch ''' 这个库专门是用来做文件名匹配的,可以使用通配符如下 * 匹配任何数量的任意字符 ? 匹配单个数量的任意字符 [seq] 匹配seq中的任意字符 [!seq] 匹配 ...
- iptables 用法及常用模块总结
iptables传输数据包的过程: 1. 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去. 2. 如果数据包就是进入本机的,它就会沿着图向下移动, ...
- [ 总结 ] nginx 编译参数中文详解
贴出来,方便查找和学习. nginx 编译参数: --prefix=PATH 指向安装目录--sbin-path=PATH 指向(执行)程序文件--conf-path=PATH 指向 ...
- Log4Net的控制台,WinForm,WebApplication使用
一.Log4Net的控制台,WinForm,WebApplication使用 1.首先使用nuget 添加log4Net 到控制台项目中 log4j每个符号的具体含义:%d %5p %c{1}:%L ...
- BZOJ 1207
1207: [HNOI2004]打鼹鼠 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3089 Solved: 1499[Submit][Statu ...
- BMP文件组成
BMP文件组成 BMP文件由文件头.位图信息头.颜色信息和图形数据四部分组成. 如图: 位图文件头BITMAPFILEHEADER 位图信息头BITMAPINFOHEADER 调色板Palette 实 ...
- hit2739
好题,回路的问题一般都要转化为度数来做若原图的基图不连通,或者存在某个点的入度或出度为0则无解.统计所有点的入度出度之差di对于di>0的点,加边(s,i,di,0):对于di<0的点,加 ...
- AC日记——由乃与大母神原型和偶像崇拜 洛谷 P3792
由乃与大母神原型和偶像崇拜 思路: 逆元+线段树维护和+线段树维护平方和+线段树维护最大最小值: 代码: #include <bits/stdc++.h> using namespace ...
- Mathematica作图
第2讲 在Mathematica中作图 一个较强的符号计算系统均有很好的绘图功能,Mathematica也不例外,Mathematica 拥有非常强大的绘图功能.并且提供了一大批基本数学函数的图 ...
- centos6.5 python2.7.8 安装scrapy总是出错【解决】
pip install Scrapy 报错: UnicodeDecodeError: 'ascii' codec can't decode byte 0xb4 in position python s ...