6242: LHC的二进制升级版

  • 时间限制:1秒
  • 内存限制:128MB
  • Special Judge
  • 提交:6
  • 正确:3

题目描述

在发现了3的二进制特殊性质后,LHC认为形如1、3、7、15......2n−1之类的数具有共通的性质。但是他太懒了,请你帮他验证结论吧。
现在,LHC要求你在1s内判断对于给定多组的二进制数num是否是2n−1的倍数。

输入

多组数据,每组数据一行,包含一个二进制数num和整数n。
数据限制:
1≤len(num)≤10000
1≤n≤32
其中len(num)代表二进制数num的长度。

输出

每组数据输出一行,如果num是2n−1的倍数,输出“YES”,否则输出“NO”。

样例输入

1111 4
101000111 3

样例输出

提示

1111(2)=15(10),15 mod 15=01111(2)=15(10),15 mod 15=0
101000111(2)=327(10),327 mod 7=5101000111(2)=327(10),327 mod 7=5

来源

LHC

Solution:

先考虑n=2,即mod=3的情况,上篇博客中有讲到把num两位两位拆分再求和得到sum,判断sum是否为mod的倍数即可。

那么,对于任意正整数n,mod=2^n-1,很容易想到把num按n位拆分再求和得到sum,判断sum是否为mod的倍数就好啦。

我居然写起了自己题目的题解,可还行,下面是三个标程。

#include <iostream>
#include <string>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <deque>
#include <map>
#include <set>
#include <fstream>
#include <time.h>
#define P(n) cout<<n<<'\n'
#define range(i,a,b) for(auto i=a;i<=b;++i)
#define LL long long
#define ULL unsigned long long
#define elif else if
#define itrange(i,a,b) for(auto i=a;i!=b;++i)
#define rerange(i,a,b) for(auto i=a;i>=b;--i)
#define fill(arr,tmp) memset(arr,tmp,sizeof(arr))
#define IOS ios::sync_with_stdio(false);cin.tie(0)
using namespace std;
string word;
LL n;
void init(){ }
void solve(){
while(cin>>word>>n){
LL ans=, mod=(1LL<<n)-;
while(!word.empty()){
LL pos=;
range(i,,n)if(!word.empty()){
ans=(ans+(word.back()-'')*pos)%mod;
pos<<=;
word.pop_back();
}
}
cout<<(ans%mod?"NO":"YES")<<'\n';
}
}
int main() {
init();
solve();
return ;
}

C++标程

#这个有点偷懒了,不过它可以验证结论的正确性(我想了一晚上怎么把这个AC代码卡掉,但是失败了。。)
while True:
try:
ss,n=input().split()
ss=int(ss,2)
n=(1<<int(n))-1
print("NO" if ss%n else "YES")
except:
break

Python标程1

#这个是正经的Python解法。。
while True:
try:
tb, n = input().split()
n = int(n)
tb = tb[::-1]
mod = (1 << n) - 1
tb += '' * (n - len(tb) % n)
tmp = 0
for i in range(0, len(tb), n):
tmp = (tmp + int(tb[i:i + n][::-1], 2)) % mod
print("NO" if tmp % mod else "YES")
except:
break

Python标程2

CUPOJ6242: LHC的二进制升级版的更多相关文章

  1. 数据库垂直拆分,水平拆分利器,cobar升级版mycat(转)

    原文:数据库垂直拆分,水平拆分利器,cobar升级版mycat 1,关于Mycat Mycat情报 基于阿里的开源cobar ,可以用于生产系统中,目前在做如下的一些改进: 非阻塞IO的实现,相对于目 ...

  2. 认识二进制安全与漏洞攻防技术 (Windows平台)

    二进制漏洞是指程序存在安全缺陷,导致攻击者恶意构造的数据(如Shellcode)进入程序相关处理代码时,改变程序原定的执行流程,从而实现破坏或获取超出原有的权限. 0Day漏洞 在计算机领域中,0da ...

  3. 使用struct处理二进制

    有的时候需要用python处理二进制数据,比如,存取文件.socket操作时.这时候,可以使用python的struct模块来完成. struct模块中最重要的三个函数是pack(), unpack( ...

  4. 如何开启MySQL 5.7.12 的二进制日志

    1. 打开/etc下的my.cnf文件 2. 编辑它,添加内容: log_bin=binary-log   #二进制日志的文件名 server_id=1  #必须指定server_id,这是MySQL ...

  5. 【.net 深呼吸】使用二进制格式来压缩XML文档

    在相当多的情况下,咱们写入XML文件默认是使用文本格式来写入的,如果XML内容是通过网络传输,或者希望节省空间,特别是对于XML文档较大的情况,是得考虑尽可能地压缩XML文件的大小. XmlDicti ...

  6. Javascript的二进制数据处理学习 ——nodejs环境和浏览器环境分别分析

    以前用JavaScript主要是处理常规的数字.字符串.数组对象等数据,基本没有试过用JavaScript处理二进制数据块,最近的项目中涉及到这方面的东西,就花一段时间学了下这方面的API,在此总结一 ...

  7. 浅析MySQL基于ROW格式的二进制日志

    上文分析的二进制日志实际上是基于STATEMENT格式的,下面我们来看看基于ROW格式的二进制日志,毕竟,两者对应的binlog事件类型也不一样,同时,很多童鞋反映基于ROW格式的二进制日志无法查到原 ...

  8. 浅析MySQL二进制日志

    查看MySQL二进制文件中的内容有两种方式 1.  mysqlbinlog 2.  SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offs ...

  9. asp.net将图片转成二进制存入数据库

    一.代码如下 int code = int.Parse(this.TextBox1.Text);//图片编码 string value = this.FileUpload1.PostedFile.Fi ...

随机推荐

  1. SourceTree for mac 注册过程(v2.7.6a)

    背景 为啥要自己注册呢,往上一堆一堆的老版本许可证偏不用,就愿意定制自己的账号style. 搞了半天,还是觉得pycharm自带的git工具就挺好用了,闲的没事记录一下. 要点 百度搜索的地址可以进入 ...

  2. Item 5 避免创建不必要的对象

    场景一: 这个是经常出现的问题,因为我们经常误用String. public class Test { public static void main(String[] args) { //参数&qu ...

  3. [hdu2460]network(依次连边并询问图中割边数量) tarjan边双联通分量+lca

    题意: 给定一个n个点m条边的无向图,q个操作,每个操作给(x,y)连边并询问此时图中的割边有多少条.(连上的边会一直存在) n<=1e5,m<=2*10^5,q<=1e3,多组数据 ...

  4. 【bzo1579】拆点+dijkstra优先队列优化+其他优化

    题意: n个点,m条边,问从1走到n的最短路,其中有K次机会可以让一条路的权值变成0.1≤N≤10000;1≤M≤500000;1≤K≤20 题解: 拆点,一个点拆成K个,分别表示到了这个点时还有多少 ...

  5. lua 闪电特效

    闪电特效 根据不同的起点 终点 资源做倾斜 拉伸 ,主要是计算倾斜角度. function ZyLight:show(params) local params = params or {} local ...

  6. 教你 Shiro 整合 SpringBoot,避开各种坑(山东数漫江湖)

    依赖包 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-sprin ...

  7. 密码本(无bug版)

    main.cpp #include <stdio.h> #include <stdlib.h> #include "data.h" #include &qu ...

  8. javascript延迟对象

    1.模拟任务队列: function taskQueue() { var taskList = []; var isRun = false; this.addTask = function (task ...

  9. 广度优先算法(BFS)与深度优先算法(DFS)

    一.广度优先算法BFS(Breadth First Search) 基本实现思想 (1)顶点v入队列. (2)当队列非空时则继续执行,否则算法结束. (3)出队列取得队头顶点v: (4)查找顶点v的所 ...

  10. Perl6 Bailador框架(4):路径匹配

    use v6; use Bailador; =begin pod /:one/:two/:....路径选择 这个路径, 用/分隔 每个/分隔一个, 如果你只设置两个(/admin/login),时, ...