51nod 1109 01组成的N的倍数(bfs)
2017-07-28 15:07
399 查看
给定一个自然数N,找出一个M,使得M > 0且M是N的倍数,并且M的10进制表示只包含0或1。求最小的M。
例如:N = 4,M = 100。
Input输入1个数N。(1 <= N <= 10^6)
Output输出符合条件的最小的M。
Sample Input
Sample Output
100
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<queue>
using namespace std;
struct node{
string ss;
int x;
}q,p;
int vis[1000005];
int n;
void bfs()
{
memset(vis,0,sizeof(vis));
queue<node>Q;
q.ss="1";
q.x=1;
vis[1]=1;
Q.push(q);
while(!Q.empty())
{
p=Q.front();
Q.pop();
if(p.x==0){cout<<p.ss<<endl;return ;}
for(int i=0;i<2;i++)
{
q=p;
if(i==0)
{
q.ss+="0";
q.x=q.x*10%n;
if(vis[q.x])continue;
vis[q.x]=1;
Q.push(q);
}
if(i==1)
{
q.ss+="1";
q.x=(q.x*10+1)%n;
if(vis[q.x])continue;
vis[q.x]=1;
Q.push(q);
}
}
}
return ;
}
int main()
{
while(cin>>n&&n)
{
if(n==1)
cout<<1<<endl;
else bfs();
}
return 0;
}
例如:N = 4,M = 100。
Input输入1个数N。(1 <= N <= 10^6)
Output输出符合条件的最小的M。
Sample Input
4
Sample Output
100
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<queue>
using namespace std;
struct node{
string ss;
int x;
}q,p;
int vis[1000005];
int n;
void bfs()
{
memset(vis,0,sizeof(vis));
queue<node>Q;
q.ss="1";
q.x=1;
vis[1]=1;
Q.push(q);
while(!Q.empty())
{
p=Q.front();
Q.pop();
if(p.x==0){cout<<p.ss<<endl;return ;}
for(int i=0;i<2;i++)
{
q=p;
if(i==0)
{
q.ss+="0";
q.x=q.x*10%n;
if(vis[q.x])continue;
vis[q.x]=1;
Q.push(q);
}
if(i==1)
{
q.ss+="1";
q.x=(q.x*10+1)%n;
if(vis[q.x])continue;
vis[q.x]=1;
Q.push(q);
}
}
}
return ;
}
int main()
{
while(cin>>n&&n)
{
if(n==1)
cout<<1<<endl;
else bfs();
}
return 0;
}
相关文章推荐
- 51nod 1109 01组成的N的倍数 (bfs)
- 51NOD 1109 01组成的N的倍数
- ACM_51nod_1109_01组成的N的倍数
- 51nod 1109 01组成的N的倍数
- 51nod 1109 —— 01组成的N的倍数
- 51nod 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的倍数(宽搜)
- 51nod 1109 01组成的N的倍数
- 51nod 1109 01组成的N的倍数【Bfs+同余定理剪枝】好题!
- 51nod 1109 01组成的N的倍数
- POJ 1426 Find The Multiple && 51nod 1109 01组成的N的倍数 (BFS + 同余模定理)
- 51Nod 1109 01组成的N的倍数
- 51Nod-1109-01组成的N的倍数
- 51Nod - 1109 01组成的N的倍数 【bfs+同余定理】
- 51nod 1109 01组成的N的倍数