鱼C论坛

 找回密码
 立即注册
查看: 3087|回复: 9

[已解决]测试2:判断是否能被xxx整除

[复制链接]
发表于 2023-1-6 15:44:58 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-1-6 15:46:02 | 显示全部楼层
本帖最后由 KeyError 于 2023-1-6 15:49 编辑


是育碧不够高吗,咋没在主页看见。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-6 15:57:24 | 显示全部楼层
没看懂题目,举例说明
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-6 16:02:48 | 显示全部楼层
输入除数,被除数(2,3,5,7,9,11之一)
如果除数 整除 被除数 在乘以被除数 等于 除数
则说明可以整除。
否则不能整除。

大体是这样的思路,不会py就不贴代码了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-6 16:07:30 | 显示全部楼层
def idiv(a,b):
    if a//b*b==a:
        return 1
    else:
        return 0

评分

参与人数 1鱼币 +5 收起 理由
KeyError + 5 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-1-6 18:03:06 | 显示全部楼层
额,忘说了也不能用 *, / 和 // 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-6 18:44:12 From FishC Mobile | 显示全部楼层
KeyError 发表于 2023-1-6 18:03
额,忘说了也不能用 *, / 和 // 。

乘法,除法都不能用,那就是只能用最基本的加法了呗。不算0的情况,先做比较(除数要较小才可能有整除的可能。若除数较大显然不会有整除,返回False),如果是较小,那就反复加除数,一直加到 等于被除数(可以被整除,返回True),或大于被除数(无法整除,返回False)。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-1-7 10:54:01 | 显示全部楼层
xx=int(input())
if pow(xx,1,7):
    print("no")
else:
    print("yes")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-25 01:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表