2022/3/11
问题:将 1, 2, \ldots , 91,2,…,9 共 99 个数分成 33 组,分别组成 33 个三位数,且使这 33 个三位数构成 1 : 2 : 31:2:3 的比例,试求出所有满足条件的 33 个三位数。
PYTHON代码段:
#三连击程序:只找第一个数,第一个数最高取到987/3=329
#定义一个判别函数
def take_number(index):
number1=[]
number=[]
#定义一个判别三位数是否相同函数
def judge(i):
if i%10==(i/10)%10 or i%10==i/100 or (i/10)%10==i/100:
return 1
#定义一个判别三个数字是否含有相同数字的函数
def judgejudge(index,i,j,k):
keynumber=set()
length=0
#先储存i中数字
for a in [i,j,k]:
length+=len(str(a))
for b in range(0,len(str(a))):
if int(str(a)[b]) not in index:
return 0
keynumber.add(str(a)[b])
#判定集合中数字数量是否是所有数字数量
if len(keynumber)==length:
return 1
else:
return 0
for i in range(123,(100*index[len(index)-1]+10*index[len(index)-2]+index[len(index)-3])//3+1):
if judge(i):
continue
else:
number1.append(i)
for j in number1:
if judge(2*j):#判定两倍和三倍数字本身是否数字重复
continue
elif judge(3*j):
continue
else:
if judgejudge(index,j,2*j,3*j):#用judgejudge判定三个数字是否重复
number.append(j)
return number
if __name__ == '__main__':
index=[1,2,3,4,5,6,7,8,9]
data=take_number(index)
for i in data:
print(i,2*i,3*i)
第一次写博客,记录自己写代码的历史哈哈哈,后续可能会优化一下吧