731 字
4 分钟
【洛谷】B2043
本文许可:CC BY 4.0
【洛谷 B2043】判断能否被 3、5、7 整除
致敬传奇屎山王 👑
[原题跳转] 以下是原题:
题目描述
给定一个整数 ,判断它能否被 ,, 整除,并输出以下信息:
1、能同时被 整除(直接输出 3 5 7,每个数中间一个空格);
2、只能被其中两个数整除(按从小到大的顺序输出两个数,例如:3 5 或者 3 7 或者 5 7,中间用空格分隔);
3、只能被其中一个数整除(输出这个除数);
4、不能被任何数整除,输出小写字符 n。
输入格式
输入一行,包括一个整数 。
输出格式
输出一行,按照描述要求给出整数被 ,, 整除的情况。
输入输出样例 #1
输入 #1
105输出 #1
3 5 7说明/提示
数据规模与约定
对于全部的测试点,保证 。
题目一句话
给定整数 x(1 ≤ x ≤ 200),输出它能被 3 5 7 中哪些数整除;
一个都整除不了就输出小写 n。
那么知道这个条件就很简单了,无非就是if判断语句嘛
number=int(input())if number%3==0 and number%5==0 and number%7==0: print('3','5','7')elif number%3==0 and number%5==0: print('3','5')elif number%3==0 and number%7==0: print('3','7')elif number%5==0 and number%7==0: print('5','7')elif number%5==0 or number%3==0 or number%7==0: print(number)else: print('n')x = int(input()) # 读数ok = [] # 空袋子,准备装能整除的除数
if x % 3 == 0: ok.append(3) # 能被 3 整除,扔进袋子if x % 5 == 0: ok.append(5)if x % 7 == 0: ok.append(7)
# 按题目要求输出if not ok: # 袋子还是空的 → 一个都整不了 print('n')else: # 袋子有东西 → 空格拼起来 print(' '.join(map(str, ok)))append小课堂
其中的append的含义是给列表中添加元素
如:
shopping = ['鸡蛋', '牛奶']shopping.append('面包')print(shopping)输出结果就为['鸡蛋', '牛奶', '面包']
无敌精简版
x=int(input())print(' '.join(str(d)for d in(3,5,7)if x%d==0)or'n')没错,就是两行,震撼吧,看不懂计算过程?那我们把它拆开来看
- 生成器
(str(d) for d in (3,5,7) if x%d==0)依次对 x 取模,只保留能整除的除数,并转成字符串。 结果是一个可迭代对象,里面元素可能是空、一个或最多三个字符串。 ' '.join(...)把上一步得到的字符串列表用空格拼成一个字符串。
- 如果列表为空,join 得到空串 ”。
- 空串在布尔上下文是 False,于是触发 or ‘n’,整个表达式变成 ‘n’。
- 否则直接返回拼接好的串。 最后 print 把这个字符串输出即可。 一句话总结: 先过滤 → 再拼接 → 空就退成 ‘n’ → 打印。
print(*[d for d in(3,5,7)if int(input())%d==0]or['n'])分享文章
生成精美分享图或复制链接,与更多人分享本文。
继续阅读
最后更新于 ,距今已过 323 天
部分内容可能已过时