KeyError 发表于 2023-1-6 15:44:58

测试2:判断是否能被xxx整除

本帖最后由 KeyError 于 2023-1-7 11:26 编辑

请大家做出判断输入数据是否能被 xx 整除的程序 (不能有 %) 。
xx 的值:
简单 .2, 5
普通 .3, 9
困难 .7, 11

格式:
程序: xx
代码

进阶: 时间复杂度为 O(k) (常数)

傻眼貓咪 发表于 2023-1-6 15:44:59

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:46:02

本帖最后由 KeyError 于 2023-1-6 15:49 编辑

{:10_277:}
是育碧不够高吗,咋没在主页看见。

人造人 发表于 2023-1-6 15:57:24

没看懂题目,举例说明

ExiaGN001 发表于 2023-1-6 16:02:48

输入除数,被除数(2,3,5,7,9,11之一)
如果除数 整除 被除数 在乘以被除数 等于 除数
则说明可以整除。
否则不能整除。

大体是这样的思路,不会py就不贴代码了

wp231957 发表于 2023-1-6 16:07:30

def idiv(a,b):
    if a//b*b==a:
      return 1
    else:
      return 0

KeyError 发表于 2023-1-6 18:03:06

额,忘说了也不能用 *, / 和 // 。{:10_277:}

阿奇_o 发表于 2023-1-6 18:44:12

KeyError 发表于 2023-1-6 18:03
额,忘说了也不能用 *, / 和 // 。

乘法,除法都不能用,那就是只能用最基本的加法了呗。不算0的情况,先做比较(除数要较小才可能有整除的可能。若除数较大显然不会有整除,返回False),如果是较小,那就反复加除数,一直加到 等于被除数(可以被整除,返回True),或大于被除数(无法整除,返回False)。

人造人 发表于 2023-1-6 20:04:04

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)

chinajz 发表于 2023-1-7 10:54:01

xx=int(input())
if pow(xx,1,7):
    print("no")
else:
    print("yes")
页: [1]
查看完整版本: 测试2:判断是否能被xxx整除