51 nod 1109 01组成的N的倍数


- 输入1个数N。(1 <= N <= 10^6)
- 输出符合条件的最小的M。
- 4
- 100
- 若没有是n的倍数的条件,如何构造01序列?
开一个队列,先把1放进去
然后取出1,把1*10,1*10+1放进去,以此类推
是n的倍数只需要判断一下即可
但答案可能爆long logn
所以用同余定理 若a%b=c,那么ax%b=cx%b (x!=0)
用字符数组记录01序列,同时记录这个01序列%n的余数
还有一个问题,空间消耗巨大
还是用同余定理
如果a%n=c,b%n=c,a<b
那么这个时候b就不用入队了
因为答案只看余数
- #include<cstdio>
- #include<queue>
- #include<cstring>
- #include<iostream>
- using namespace std;
- struct node
- {
- string s;
- int mod;
- }cur,nxt;
- bool v[];
- queue<node>q;
- int main()
- {
- int n;
- scanf("%d",&n);
- cur.s="";cur.mod=;
- q.push(cur);
- while(!q.empty())
- {
- cur=q.front();
- q.pop();
- nxt.mod=(cur.mod*)%n;
- nxt.s=cur.s+'';
- if(nxt.mod==)
- {
- cout<<nxt.s;
- return ;
- }
- if(!v[nxt.mod])
- {
- q.push(nxt);
- v[nxt.mod]=true;
- }
- nxt.mod=(cur.mod*+)%n;
- nxt.s=cur.s+'';
- if(nxt.mod==)
- {
- cout<<nxt.s;
- return ;
- }
- if(!v[nxt.mod])
- {
- q.push(nxt);
- v[nxt.mod]=true;
- }
- }
- }
51 nod 1109 01组成的N的倍数的更多相关文章
- 1109 01组成的N的倍数
1109 01组成的N的倍数 基准时间限制:1 秒 空间限制:131072 KB 给定一个自然数N,找出一个M,使得M > 0且M是N的倍数,并且M的10进制表示只包含0或1.求最小的M. ...
- 51nod 1109 01组成的N的倍数
用01 组成 N的最小倍数 这个BFS搜索就好. 类似这道: ZOJ Problem Set - 1530 每次 要么是0 要么是1, 记入余数,和前驱. #include<bits/stdc ...
- 51 Nod 1085 01背包问题
1085 背包问题 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2--Wn(Wi为 ...
- POJ 1426 Find The Multiple && 51nod 1109 01组成的N的倍数 (BFS + 同余模定理)
Find The Multiple Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21436 Accepted: 877 ...
- 51Nod——T 1109 01组成的N的倍数
https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1109 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 ...
- 51 nod 1439 互质对(Moblus容斥)
1439 互质对 题目来源: CodeForces 基准时间限制:2 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 有n个数字,a[1],a[2],…,a[n].有一个集合,刚开 ...
- 51 nod 1495 中国好区间
1495 中国好区间 基准时间限制:0.7 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 阿尔法在玩一个游戏,阿尔法给出了一个长度为n的序列,他认为,一段好的区间,它的长度是& ...
- 51 nod 1427 文明 (并查集 + 树的直径)
1427 文明 题目来源: CodeForces 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 安德鲁在玩一个叫“文明”的游戏.大妈正在帮助他. 这个游 ...
- 51 nod 1055 最长等差数列(dp)
1055 最长等差数列 基准时间限制:2 秒 空间限制:262144 KB 分值: 80 难度:5级算法题 N个不同的正整数,找出由这些数组成的最长的等差数列. 例如:1 3 5 6 8 9 ...
随机推荐
- 希尔排序(java实现)
上篇blog中介绍的直接插入排序,希尔排序就是对直接插入排序的一个优化.比如有这么一种情况:对一个无序数组进行从小到大的排序,但是数组的最后一个位置的数是最小的,我们要把它挪到第一个位置,其他位置的都 ...
- OpenCV学习笔记——疑问
vec3b:表示每一个Vec3b对象中,可以存储3个char(字符型)数据,比如可以用这样的对象,去存储RGB图像中的一个像素点.typedef Vec<uchar, 3> Vec3b; ...
- 安装cocoa pods
1.移除现有Ruby默认源 $gem sources --remove https://rubygems.org/ 2.使用新的源 $gem sources -a https://ruby.taoba ...
- 【转】node.js框架比较
我偶然间看到这篇文章,转这个文章并没有什么含义,仅仅是感觉总结的不错,对于新学node的友友们来说希望这篇文章为大家对 Node.js 后端框架选型带来一些帮助,学习不再迷茫,也是让我有个保存,以后参 ...
- erlang调优方法
1. 来自Scaling Erlang的方法 内核调优: # Increase the ipv4 port range: sysctl -w net.ipv4.ip_local_port_range= ...
- C语言文法阅读与理解
<翻译单元>--><外部声明>--><函数定义>|<申报> <函数定义>--><声明说明符>-->< ...
- 【Linux 命令】- tail命令
linux tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有更新,tail会自己主动刷新,确保你看到最新的档 ...
- 微信小程序 功能函数 touch触摸计时
shiFN:function(e){ // touchstart // touchend let that=this; let n=0; // 判断是开始还是结束的参数 let textTure = ...
- 控件属性和InitializeComponent()关系:
namespace Test22 { partial class Form1 { /// <summary> /// 必需的设计器变量. /// </summary> priv ...
- ZOJ3084_S-Nim
题目的意思是这样的,给定你若干堆石子,每次你可以从任一堆取出某些固定数量的石子,每次取完后必须保证没堆石子的数量不为0,谁无法操作了就算fail. 刚刚开始看题目的时候有点也没有思路,甚至连Sg函数也 ...