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”。

样例输入

  1. 1111 4
  2. 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的倍数就好啦。

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

  1. #include <iostream>
  2. #include <string>
  3. #include <cstdio>
  4. #include <cmath>
  5. #include <cstring>
  6. #include <algorithm>
  7. #include <vector>
  8. #include <queue>
  9. #include <deque>
  10. #include <map>
  11. #include <set>
  12. #include <fstream>
  13. #include <time.h>
  14. #define P(n) cout<<n<<'\n'
  15. #define range(i,a,b) for(auto i=a;i<=b;++i)
  16. #define LL long long
  17. #define ULL unsigned long long
  18. #define elif else if
  19. #define itrange(i,a,b) for(auto i=a;i!=b;++i)
  20. #define rerange(i,a,b) for(auto i=a;i>=b;--i)
  21. #define fill(arr,tmp) memset(arr,tmp,sizeof(arr))
  22. #define IOS ios::sync_with_stdio(false);cin.tie(0)
  23. using namespace std;
  24. string word;
  25. LL n;
  26. void init(){
  27.  
  28. }
  29. void solve(){
  30. while(cin>>word>>n){
  31. LL ans=, mod=(1LL<<n)-;
  32. while(!word.empty()){
  33. LL pos=;
  34. range(i,,n)if(!word.empty()){
  35. ans=(ans+(word.back()-'')*pos)%mod;
  36. pos<<=;
  37. word.pop_back();
  38. }
  39. }
  40. cout<<(ans%mod?"NO":"YES")<<'\n';
  41. }
  42. }
  43. int main() {
  44. init();
  45. solve();
  46. return ;
  47. }

C++标程

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

Python标程1

  1. #这个是正经的Python解法。。
  2. while True:
  3. try:
  4. tb, n = input().split()
  5. n = int(n)
  6. tb = tb[::-1]
  7. mod = (1 << n) - 1
  8. tb += '' * (n - len(tb) % n)
  9. tmp = 0
  10. for i in range(0, len(tb), n):
  11. tmp = (tmp + int(tb[i:i + n][::-1], 2)) % mod
  12. print("NO" if tmp % mod else "YES")
  13. except:
  14. 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. [HDU5214]Movie解题报告|小水题大智慧

    Movie Cloud and Miceren like watching movies. Today, they want to choose some wonderful scenes from ...

  2. 【转载】Quick 中的触摸事件

    原文地址 http://cn.cocos2d-x.org/article/index?type=quick_doc&url=/doc/cocos-docs-master/manual/fram ...

  3. 两小时快速构建微信小程序

    小程序在2017年1月上线之初,被社会极力吹捧,刻意去将其制造为一个“风口”,透支其价值.但是在之后一个月里,石破天惊迅速归为沉寂.媒体又开始过度消费小程序,大谈其鸡肋之处. 个人认为小程序的一个分水 ...

  4. DotNETCore 学习笔记 MVC视图

    Razor Syntax Reference Implicit Razor expressions <p>@DateTime.Now</p> <p>@DateTim ...

  5. OpenCVSSDpython目标探测对象检测

    1.请参考大牛博客链接 https://www.aiuai.cn/aifarm822.html

  6. js_同步和异步

    刚开始写js那会,对这一块是知之甚少,太多太多的知识不足,致使做什么都很艰难.现在工作也有段时间了,知识也有了点积累, 写点什么分享一下. 同步和异步?这个问题是在使用ajax请求后台数据的时候出现的 ...

  7. Linux 内核同步之自旋锁与信号量的异同【转】

    转自:http://blog.csdn.net/liuxd3000/article/details/8567070 Linux 设备驱动中必须解决的一个问题是多个进程对共享资源的并发访问,并发访问会导 ...

  8. 详见github

    本栏博客不再专门更新,详见:https://github.com/dxscjx123/LeetCode

  9. java===java基础学习(8)---静态域与静态方法

    静态域:如果将域定义为static,每个类中只有一个这样的域.而每一个对象对于所有的实例域却都有自己的一份拷贝.例如,加入需要给每一个雇员赋予唯一的标识码.这里给的Employee类添加一个实例域id ...

  10. python 判断文件的创建时间和当前时间的比较

    import os import time import datetime filePath=r"C:\pyweibo\cookies5673210223" ctime=os.pa ...