【51Nod 1109】01组成的N的倍数
来源:互联网 发布:教父刀数据 编辑:程序博客网 时间:2024/06/05 20:14
Description
给定一个自然数N,找出一个M,使得M > 0且M是N的倍数,并且M的10进制表示只包含0或1。求最小的M。
例如:N = 4,M = 100。
Solution
开始用深搜做了一下,结果不行,很显然不行,打开话题看了一下,改成用广搜做了一下。可以了!!
Code
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#define fo(i,a,b) for(i=a;i<=b;i++)#define fod(i,a,b) for(i=a;i>=b;i--)using namespace std;typedef long long ll;int i,j,k,l,t,n,m,now;queue<int> q;int a[1000007],sh[1000007],b[1000007];ll ans;void gao(int x){ while(x!=-1){ b[++b[0]]=a[x]; x=sh[x]; } fod(i,b[0],1)printf("%d",b[i]);}int main(){ scanf("%d",&n); q.push(1); sh[1]=-1; a[1]=1; while(!q.empty()){ now=q.front(); q.pop(); k=now*10%n; l=(now*10+1)%n; if(!k){ gao(now); printf("0\n"); break; } if(!l){ gao(now); printf("1\n"); break; } if(!sh[k]){ q.push(k); sh[k]=now; a[k]=0; } if(!sh[l]){ q.push(l); sh[l]=now; a[l]=1; } } // printf("%lld\n",ans);}
2 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的倍数(广搜)
- 二维数组
- 封装
- hdu 5945 Fxx and game (dp+单调队列)
- oracle需要学习的数据字典(需更新)
- LA 3667 Ruler IDA* .
- 【51Nod 1109】01组成的N的倍数
- cookies示例
- 洛谷 P1631 序列合并
- 结构体
- 我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
- LA 4253 Archery -
- 《Web全栈工程师的自我修养》-好书推荐
- 【23.33%】【hdu 5945】Fxx and game
- poj1804 Brainman 归并排序求逆序对