即把所有数都列举
题目描述: 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 看这个算式: ☆☆☆ + ☆☆☆ = ☆☆☆ 如果每个五角星代表 1 ~ 9 的不同的数字。这个算式有多少种可能的正确填写方法? 173 + 286 = 459 295 + 173 = 468 173 + 295 = 468 183 + 492 = 675 以上都是正确的填写法! 注意:111+222=333 是错误的填写法!因为每个数字必须是不同的!也就是说:1 ~ 9 中的所有数字,每个必须出现且仅出现一次! 注意:不包括数字 “0”。 注意:满足加法交换率的式子算两种不同的答案。 所以答案肯定是个偶数! 运行限制: 1. 最大运行时间:1s 2. 最大运行内存: 128M
def check(a,b,c): l=[] l.append(0) #注意这里要加一个0,因为后续数字中不能有0,要是有0的话择就return False了 while a>0: if (a%10) not in l: l.append(a%10) else: return False if (b%10) not in l: l.append(b%10) else: return False if (c%10) not in l: l.append(c%10) else: return False a//=10 b//=10 c//=10 return True s=0 for i in range(123,988): a=i for j in range(123,988-a): #b可缩小范围 b=j c=a+b if check(a,b,c): s+=1 print(s)
暴力枚举
题目描述: 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 学习了约数后,小明对于约数很好奇,他发现,给定一个正整数 t,总是可以找到含有 t 个约数的整数。小明对于含有 t 个约数的最小数非常感兴趣,并把它定义为 St。 例如 S1=1,S2=2,S3=4,S4=6,⋅⋅⋅ 现在小明想知道,当 t=100 时,S100 是多少? 运行限制: 1. 最大运行时间:1s 2. 最大运行内存:128M
题目分析
补充 :双重循环里同时停止循环的方法 :for...else... else 中的语句只有在for循环正常执行完的情况下才执行。即 for循环未break。(因为这里的内层for 与else是同级的,只有for完全执行了,才会执行else)for i in range(500,100000): s=0 for j in range(1,i+1): if i%j==0: s+=1 if s==100: print(i) break
for i in range(5): for j in range(5): print(i, j) if i == 3 and j == 3: break else: continue break
既约分数
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 如果一个分数的分子和分母的最大公约数是 1,这个分数称为既约分数。 例如 $\frac{3}{4} ,\frac{1}{8} ,\frac{7}{1}$, 都是既约分数。 ```txt 请问,有多少个既约分数,分子和分母都是 1 到 2020 之间的整数(包括 1 和 2020)?
辗转相除法: 求最大公因数def ocd(a,b): #辗转相除法 if a%b==0:return b else:return ocd(b,a%b)
题解:
def ocd(a,b): #辗转相除法 if a%b==0:return b else:return ocd(b,a%b) s=0 for a in range(1,2021): for b in range(1,2021): if ocd(a,b)==1: s+=1 print(s)