51nod 1109 01组成的N的倍数
来源:互联网 发布:淘宝实名认证怎么弄 编辑:程序博客网 时间:2024/05/18 14:13
1109 01组成的N的倍数
基准时间限制: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
之前写过这类题目,就用广搜写了,然后WA了,想了一下应该是后来的数字超过了位数,连long long 都爆了,看了一下题解,dalao们都是用字符串+同余剪枝写的,学习了
#include<iostream>#include<cstdio>#include<cstring>#include<queue>#include<string>using namespace std;typedef long long ll;struct Node{string str;ll num;};bool book[1000010];int n;void bfs(){queue<Node> que;memset(book,false,sizeof(book));Node start;start.str="1";start.num=1;book[start.num]=true;que.push(start);while(!que.empty()){Node tmp=que.front();que.pop();if(tmp.num==0){cout<<tmp.str<<endl;return;}for(int i=0;i<2;i++){Node end;if(i==0){end.str=tmp.str+"0";end.num=(tmp.num*10)%n;if(book[end.num]) continue;book[end.num]=true;que.push(end);}else{end.str=tmp.str+"1";end.num=(tmp.num*10+1)%n;if(book[end.num]) continue;book[end.num]=true;que.push(end);}}}return;}int main(){while(cin>>n){if(n==1) cout<<1<<endl;else bfs();}}
阅读全文
0 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的倍数(广搜)
- 关于Dagger2的使用心得
- Java高级架构师系统进阶线路
- 七种寻址方式
- 有关混合数据类型转换的一些想法
- Spring MVC 解决form表单提交中文乱码问题
- 51nod 1109 01组成的N的倍数
- 使用CSS写出三角形、圆形、平行四边形、梯形
- 最强PostMan使用教程(3)- script
- Mybatis_mybatis常用jdbcType数据类型
- myBatis-1
- sdnu1071
- pandas行列传播运算
- 推荐 | CVPR2017关于如何解释深度学习模型的讲座(附视频与PPT)
- 《初涉爬虫》