CUPOJ6242 LHC的二進位制公升級版

2022-04-10 08:21:39 字數 2228 閱讀 1631

在發現了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」。

copy sample input

1111 4

101000111 3

copy sample output

yes

no

1111(2)=15(10),15 mod 15=01111(2)=15(10),15mod 15=0

101000111(2)=327(10),327 mod 7=5101000111(2)=327(10),327mod 7=5

lhc先考慮n=2,即mod=3的情況,上篇部落格中有講到把num兩位兩位拆分再求和得到sum,判斷sum是否為mod的倍數即可。

那麼,對於任意正整數n,mod=2^n-1,很容易想到把num按n位拆分再求和得到sum,判斷sum是否為mod的倍數就好啦。

我居然寫起了自己題目的題解,可還行,下面是三個標程。

#include #include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define p(n) cout

#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()

}cout

<

no":"

yes")<

; }

}int

main()

c++標程

#

這個有點偷懶了,不過它可以驗證結論的正確性(我想了一晚上怎麼把這個ac**卡掉,但是失敗了。。)

while

true:

try:

ss,n=input().split()

ss=int(ss,2)

n=(1

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) - 1tb += '

0' * (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

LeetCode 1018 可被5整除的二進位制字首

給定由若干 0 和 1 組成的陣列 a。我們定義 n i 從 a 0 到 a i 的第 i 個子陣列被解釋為乙個二進位制數 從最高有效位到最低有效位 返回布林值列表 answer,只有當 n i 可以被 5 整除時,答案 answer i 為 true,否則為 false。示例 1 輸入 0,1,1...

LeetCode 1018可被5整除的二進位制字首

給定由若干 0 和 1 組成的陣列 a。我們定義 n i 從 a 0 到 a i 的第 i 個子陣列被解釋為乙個二進位制數 從最高有效位到最低有效位 返回布林值列表 answer,只有當 n i 可以被 5 整除時,答案 answer i 為 true,否則為 false。示例 1 輸入 0,1,1...

bzoj1992鬼谷子的錢袋 二分亂搞 二進位制

time limit 10 sec memory limit 162 mb submit 3223 solved 2333 鬼谷子非常聰明,正因為這樣,他非常繁忙,經常有各諸侯車的特派員前來向他諮詢時政。有一天,他在咸陽遊歷的時候,朋友告訴他在咸陽最大的拍賣行 聚寶商行 將要舉行一場拍賣會,其中有一...