51Nod——T 1109 01组成的N的倍数
2017-09-14 20:57
253 查看
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1109
基准时间限制: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示例
4Output示例
100
搜索+同余定理剪枝、
每次入队 (队首*10+0/1)%n 的点,若x%n!=0,则abcdx%n!=0,
所以记录每次的余数,已经出现过的就不能出解不用入队了
#include <cstdio> #include <queue> const int N(1e6+5); int pre ,ans ,n; std::queue<int>que; void cout(int x) { if(x==-1) return ; cout(pre[x]); printf("%d",ans[x]); } int Presist() { scanf("%d",&n); pre[1]=-1; ans[1]=1; que.push(1); for(int u,v; !que.empty(); ) { u=que.front(); que.pop(); v=(u*10)%n; if(v==0) { cout(u); puts("0"); break; } if(!pre[v]) { pre[v]=u; ans[v]=0; que.push(v); } v=(u*10+1)%n; if(v==0) { cout(u); puts("1"); break; } if(!pre[v]) { pre[v]=u; ans[v]=1; que.push(v); } } return 0; } int Aptal=Presist(); int main(){;}
相关文章推荐
- 51nod 1109 —— 01组成的N的倍数
- 51nod 1109 01组成的N的倍数【Bfs+同余定理剪枝】好题!
- 51nod 1109 01组成的N的倍数(宽搜+剪枝)
- 51nod 1109 —— 01组成的N的倍数
- 51NOD 1109 01组成的N的倍数
- 51 nod 1109 01组成的N的倍数
- 51nod 1109 01组成的N的倍数
- 51nod 1109 01组成的N的倍数
- 51nod 1109 01组成的N的倍数(bfs)
- POJ 1426 Find The Multiple && 51nod 1109 01组成的N的倍数 (BFS + 同余模定理)
- 51nod-1109 01组成的N的倍数(宽搜)
- 【51Nod 1109】01组成的N的倍数
- 51Nod - 1109 01组成的N的倍数 【bfs+同余定理】
- ACM_51nod_1109_01组成的N的倍数
- 51 nod 1109 01组成的N的倍数
- 51nod 1109 01组成的N的倍数 【dfs+剪枝+vector】
- 51nod 1109 01组成的N的倍数
- 51nod 1109 01组成的N的倍数 (bfs)
- 51Nod 1109 01组成的N的倍数
- 1109 01组成的N的倍数