测试2:判断是否能被xxx整除
本帖最后由 KeyError 于 2023-1-7 11:26 编辑请大家做出判断输入数据是否能被 xx 整除的程序 (不能有 %) 。
xx 的值:
简单 .2, 5
普通 .3, 9
困难 .7, 11
格式:
程序: xx
代码
进阶: 时间复杂度为 O(k) (常数) def foo(a, b):
while b >= a:
b -= a
return not b
# foo = lambda a, b: foo(a, b - a) if b >= a else not b 这是一行式代码题解
print(foo(13, 39)) # 13 被 39 整除
print(foo(5, 128)) # 5 不能被 128 整除True
False 本帖最后由 KeyError 于 2023-1-6 15:49 编辑
{:10_277:}
是育碧不够高吗,咋没在主页看见。 没看懂题目,举例说明
输入除数,被除数(2,3,5,7,9,11之一)
如果除数 整除 被除数 在乘以被除数 等于 除数
则说明可以整除。
否则不能整除。
大体是这样的思路,不会py就不贴代码了 def idiv(a,b):
if a//b*b==a:
return 1
else:
return 0 额,忘说了也不能用 *, / 和 // 。{:10_277:} KeyError 发表于 2023-1-6 18:03
额,忘说了也不能用 *, / 和 // 。
乘法,除法都不能用,那就是只能用最基本的加法了呗。不算0的情况,先做比较(除数要较小才可能有整除的可能。若除数较大显然不会有整除,返回False),如果是较小,那就反复加除数,一直加到 等于被除数(可以被整除,返回True),或大于被除数(无法整除,返回False)。 KeyError 发表于 2023-1-6 18:03
额,忘说了也不能用 *, / 和 // 。
首先加法肯定得能用
减法可以用加法模拟
乘法也可以用加法模拟
除法用乘法模拟
#!/usr/bin/env python
#coding=utf-8
import itertools
def add(a, b): return a + b
def sub(a, b): return add(a, -b)
def mul(a, b):
result = 0
for i in range(0, b): result = add(result, a)
return result;
def div(a, b):
for i in itertools.count(1):
if mul(i, b) > a: return sub(i, 1)
def mod(a, b): return sub(a, mul(div(a, b), b))
print(add(10, 3))
print(10 + 3)
print(sub(10, 3))
print(10 - 3)
print(mul(10, 3))
print(10 * 3)
print(div(10, 3))
print(10 // 3)
print(mod(10, 3))
print(10 % 3)
print(add(12, 3))
print(12 + 3)
print(sub(12, 3))
print(12 - 3)
print(mul(12, 3))
print(12 * 3)
print(div(12, 3))
print(12 // 3)
print(mod(12, 3))
print(12 % 3)
xx=int(input())
if pow(xx,1,7):
print("no")
else:
print("yes")
页:
[1]