51nod 1109 01组成的N的倍数 【dfs+剪枝+vector】
2017-02-19 23:02
309 查看
1109 01组成的N的倍数
基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题
给定一个自然数N,找出一个M,使得M > 0且M是N的倍数,并且M的10进制表示只包含0或1。求最小的M。
例如:N = 4,M = 100。
Input
Output
Input示例
Output示例
代码:
#include<cstdio>
#include<vector>
#include<queue>
#include<cstring>
#include<algorithm>
using namespace std;
bool yu[1000100];
struct node{
vector<char> ch;
int shu;
}now,qian;
int main()
{
int n;
scanf("%d",&n);
if(n==1)
printf("1\n");
else
{
queue<node> que;
now.shu=1;
now.ch.push_back('1');
que.push(now);
int a,b;yu[1]=true;
bool fafe=false;
while (true)
{
now=que.front();
que.pop();
a=now.shu*10;
for (int i=0;i<2;i++)
{
b=(a+i)%n;
if (b==0)
{
for (int i=0;i<now.ch.size();i++)
printf("%c",now.ch[i]);
printf("%d\n",i);
fafe=true;
break;
}
if (yu[b]) continue;
yu[b]=true;
qian.ch=now.ch;
qian.ch.push_back(i+48);
qian.shu=b;
que.push(qian);
}
if (fafe) break;
}
}
return 0;
}
基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题
给定一个自然数N,找出一个M,使得M > 0且M是N的倍数,并且M的10进制表示只包含0或1。求最小的M。
例如:N = 4,M = 100。
Input
输入1个数N。(1 <= N <= 10^6)
Output
输出符合条件的最小的M。
Input示例
4
Output示例
100
代码:
#include<cstdio>
#include<vector>
#include<queue>
#include<cstring>
#include<algorithm>
using namespace std;
bool yu[1000100];
struct node{
vector<char> ch;
int shu;
}now,qian;
int main()
{
int n;
scanf("%d",&n);
if(n==1)
printf("1\n");
else
{
queue<node> que;
now.shu=1;
now.ch.push_back('1');
que.push(now);
int a,b;yu[1]=true;
bool fafe=false;
while (true)
{
now=que.front();
que.pop();
a=now.shu*10;
for (int i=0;i<2;i++)
{
b=(a+i)%n;
if (b==0)
{
for (int i=0;i<now.ch.size();i++)
printf("%c",now.ch[i]);
printf("%d\n",i);
fafe=true;
break;
}
if (yu[b]) continue;
yu[b]=true;
qian.ch=now.ch;
qian.ch.push_back(i+48);
qian.shu=b;
que.push(qian);
}
if (fafe) break;
}
}
return 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的倍数
- 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的倍数
- 51nod 1109 01组成的N的倍数+
- 51Nod-1109-01组成的N的倍数
- 51nod 1109 01组成的N的倍数
- ACM_51nod_1109_01组成的N的倍数
- 51nod 1109 01组成的N的倍数
- 51nod 1109 01组成的N的倍数(bfs)
- 51nod 1109 01组成的N的倍数(宽搜+剪枝)
- 51nod 1109 01组成的N的倍数【Bfs+同余定理剪枝】好题!