1294
如果把一个正整数的每一位都平方后再求和,得到一个新的正整数。对新产生的正整数再做同样的处理。
如此一来,你会发现,不管开始取的是什么数字,最终如果不是落入1,就是落入同一个循环圈。
请写出这个循环圈中最大的那个数字。
输出
输出答案即可
注意
签到题
算法
笔算可得结果145
题解
结果:145
1297
小明最近喜欢搭数字积木,一共有10块积木,每个积木上有一个数字,0~9。
搭积木规则:每个积木放到其它两个积木的上面,并且一定比下面的两个积木数字小。
最后搭成4层的金字塔形,必须用完所有的积木
下面是两种合格的搭法:
请你计算这样的搭法一共有多少种?
输出
一个整数表示答案
注意
排列题
算法
- 必定0在第一层,1在第二层
- 为减少枚举次数,分1在左,或1在右
- 把其拉直按从左到右,从上到下
题解
from itertools import permutations
def f(data):
SF = 1
for i in range(6):
if i == 0:continue
elif i == 2 or i ==1:
if data[i]<data[i+2] and data[i]<data[i+3]:
continue
else:
SF = 0
break
else:
if data[i]<data[i+3] and data[i]<data[i+4]:
continue
else:
SF = 0
break
if SF:
return True
res = 0
# 1在第二层左边
a = [i for i in range(10)]
b = [i for i in range(10)]
print(b)
for i in permutations([2,3,4,5,6,7,8,9]):
b[2:] = i
if f(b):
res += 1
# 1在第二层右边
a[1],a[2] = a[2],a[1]
print(a)
for i in permutations([2,3,4,5,6,7,8,9]):
a[1] = i[0]
a[3:] = i[1:]
if f(a):
res += 1
if res == 501 or res == 101:
print('/',a)
print(res)