51 nod 1109 01组成的N的倍数
来源:互联网 发布:真维斯淘宝女装模特 编辑:程序博客网 时间:2024/05/18 15:30
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
思路: 这个题肯定要想办法开数组存 结果的每一位 , 首先要明白的是 : 假设 一个数x % n 假设x 为556 n为 6 那么 556%6 的值 和
((((5%6)*10+5)%6)*10+6)%6的值 是相同的 至于怎么证明 ,不大会 ,但是看过程应该能看个差不多。
那么我们就用 bfs 可以考虑每一位分别是0和1的情况 并且用vis【】 记录已经出现过的余数 用 fa 记录路径。。
代码:
#include<bits/stdc++.h>using namespace std;struct node{ int a,b,pre;}a[2000000];void output(int k){ if (a[k].pre !=-1) output(a[k].pre); printf("%d",a[k].a);}/*void out(int k){if (a[k].pre !=-1) output(a[k].pre); printf("%d ",a[k].b);}*/int used[2000000];int main(){ int n; scanf("%d",&n); if(n==1){ printf("1\n"); return 0;} a[0].a=1; a[0].b=1; a[0].pre=-1; int L=1; int r=0; for (int i=0;i<L;i++){ for (int j=0;j<2;j++) { r=(a[i].b*10+j)%n; if (!used[r]) { a[L].a=j; a[L].b=r; a[L].pre=i; used[r]=1; L++; } if (r==0) break; } if (r==0) break; } //printf("k: %d\n",L-1); output(L-1); //printf("\n"); //out(L-1); printf("\n"); return 0;}
阅读全文
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的倍数(广搜)
- javascript中substr使用时的参数问题
- iOS拨打电话对话框问题解决
- 欢迎使用CSDN-markdown编辑器
- Linux I2C子系统分析之(一) ----- 用GPIO模拟I2C总线
- MFC调用matlab的dll时出现调试通过但是出现一些异常的问题
- 51 nod 1109 01组成的N的倍数
- 【1】Vim 快速入门
- vi01
- 如何远程控制另外一台电脑
- plsql developer连接远程数据库
- angular集成Cesium
- 大型网站架构系列:20本技术书籍推荐
- 动态切横竖屏
- iOS下更改系统音量