POJ 1426 (BFS)
2018-02-25 18:53
495 查看
每日打卡(1/2)
传送门:点击打开链接
题目大意:
寻找一个是n(1 <= n <= 200)的倍数的整数,并且这个整数只能由1和0组成。
思路:
首先,n是一个不小于1的数,假设最终求得的数是m,那么m必然第一位是1.
确定了首位后,出现两种情况:11和10,这时候用一个bfs/dfs就可以解决,为了保险起见写了BFS。在每种情况下用m%n,如果结果为0可以直接输出。
底下是代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include<queue>
#include<cmath>
using namespace std;
int n,k;
long long ans;
long long bfs(int n)
{
queue<long long> q;
q.push(1);
while(1)
{
long long m = q.front();
if(m%n==0) return m;
q.pop();
q.push(m*10);
q.push(m*10+1);
}
}
int main()
{
while(scanf("%d",&n)!=EOF&&n)
{
cout<<bfs(n)<<endl;
}
return 0;
}
传送门:点击打开链接
题目大意:
寻找一个是n(1 <= n <= 200)的倍数的整数,并且这个整数只能由1和0组成。
思路:
首先,n是一个不小于1的数,假设最终求得的数是m,那么m必然第一位是1.
确定了首位后,出现两种情况:11和10,这时候用一个bfs/dfs就可以解决,为了保险起见写了BFS。在每种情况下用m%n,如果结果为0可以直接输出。
底下是代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include<queue>
#include<cmath>
using namespace std;
int n,k;
long long ans;
long long bfs(int n)
{
queue<long long> q;
q.push(1);
while(1)
{
long long m = q.front();
if(m%n==0) return m;
q.pop();
q.push(m*10);
q.push(m*10+1);
}
}
int main()
{
while(scanf("%d",&n)!=EOF&&n)
{
cout<<bfs(n)<<endl;
}
return 0;
}
相关文章推荐
- poj1426 - Find The Multiple [bfs 记录路径]
- POJ 1426 Find The Multiple 【BFS】
- POJ 1426 Find The Multiple(bfs)
- POJ1426,Find The Multiple,bfs...注意类型 5兆内存过了...
- poj 1426 Find The Multiple( bfs )
- POJ 1426 广搜BFS
- Poj 1426--Find The Multiple(bfs或dfs)
- poj 1426 BFS
- Find The Multiple poj 1426 bfs
- POJ-1426-Find The Multiple (BFS +DFS)两种解法
- poj - 1426-Find The Multiple-BFS
- poj1426 bfs+同余数定理
- POJ 1426 Fine The Multiple BFS 深搜
- POJ 1426 Find The Multiple(简单搜索bfs)
- Poj(1426),BFS
- poj 1426 Find The Multiple(搜索BFS的思想+ 同余模定理+二叉树+01哈夫曼编码)
- poj1426 Find The Multiple(bfs)
- POJ_1426_Find The Multiple(BFS)
- POJ - 1426 思维BFS
- poj 1426 Find The Multiple (bfs 搜索)