在Python中找到1的个数除以m后的余数的程序
在Python中,我们可以使用多种方法来找到1的个数除以m后的余数。本文将介绍两种不同的方法,分别利用除法和取模运算符。
方法一:使用除法
我们可以先统计1在给定数字中出现的次数,再除以m,最后取余数即可。
示例代码:
def count_ones(num):
return bin(num).count('1')
# count number of ones in 123
print(count_ones(123)) # output: 6 (because 123 is 1111011 in binary)
def ones_mod_m(num, m):
count = count_ones(num)
return count % m
# count ones mod 3 in 123
print(ones_mod_m(123, 3)) # output: 0 (because 6 divided by 3 leaves 0 as remainder)
上述代码中,我们首先定义了一个函数count_ones
,它接受一个数字并返回在它的二进制表示中1的数量。接着,我们定义了另一个函数ones_mod_m
,这个函数接受两个参数:一个数字和一个除数m。我们在这个函数中调用了count_ones
来得到1的数量,然后对它进行了取余操作。
如果我们将以上代码保存为一个名为count_ones_mod_m.py
的文件并运行它,我们将会得到下面的输出:
6
0
方法二:使用取模运算符
取模运算符(%
)可以用来计算两个数字相除后的余数。我们可以用它来计算1的数量除以m的余数。
示例代码:
def ones_mod_m(num, m):
count = 0
while num > 0:
if num % 2 == 1:
count += 1
num //= 2
return count % m
# count ones mod 5 in 123456789
print(ones_mod_m(123456789, 5)) # output: 3
上述代码中,我们定义了一个函数ones_mod_m
,它接受两个参数:一个数字和一个除数m。我们使用了一个while循环来计算二进制表示中1的数量,并使用取模运算符计算余数。最后,我们将余数返回。
如果我们将以上代码保存为一个名为count_ones_mod_m.py
的文件并运行它,我们将会得到下面的输出:
3
结论
在Python中,我们可以使用多种方法来找到1的个数除以m后的余数。我们可以使用除法来统计二进制表示中1的数量,再使用取模运算符计算余数。我们也可以直接使用循环来计算1的数量,并使用取模运算符计算余数。无论我们采用哪种方法,我们都能够轻松地找到1的个数除以m后的余数。