题目描述
将1,2, \cdots ,91,2,⋯,9共99个数分成33组,分别组成33个三位数,且使这33个三位数构成1:2:31:2:3的比例,试求出所有满足条件的33个三位数。
Python解答
- i 为最小的三位数,从123到333遍历。j 为 i 的2倍数,k 为 i 的3倍数。
解答1
- 把i,j,k分别作为长度为3的字符串,然后合并为长度为9的字符串。
- 对这个字符串去重,如果长度依然为9,而且其中不包括0,那么说明i,j,k满足条件。
# -*- coding: utf-8 -*-
# @Time : 2019/10/31 17:27
# @Author : 小晓酱
# @File : luoguu.py
# @Software: PyCharm
for i in range(123, 334):
j = str(2 * i)
k = str(3 * i)
i = str(i)
a = {i[0], i[1], i[2], j[0], j[1], j[2], k[0], k[1], k[2]}
if len(a) == 9 and ("0" not in a):
print(int(i), int(j), int(k))
解答2
- 取出i,j,k的9个数字。(百位数通过//100、十位数通过//10%10、个位数通过%10计算得到)
- 如果这9个数字的和等于1~9的和,并且这9个数字的积等于1~9的积,那么说明i,j,k满足条件。
<