#题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数,//m=3
nums = [1,2,3,4,5,6,7,8,9,0]
chnums = nums[3:]
chnums.extend(nums[0:3])
print(chnums)
#第二种方法,移位
m = 3
for i in range(m):
last = nums[-1]
for j in range(len(nums)-1):
nums[j-1] = nums[j]
nums[len(nums)-2] = last
print(nums)
#题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
import copy
n = [i for i in range(1,35)]
print(n)
count = 0
while True:
remind = []
for i in range(len(n)):
count += 1
if count % 3 == 0:
continue
remind.append(n[i])
n = remind.copy() #copy
print(n)
if len(remind)==1:
break
#海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又
#平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
remind = 4
while True:
peachs = remind
for i in range(5):
if peachs % 4 == 0:
peachs = (peachs / 4) * 5 + 1
else:
break
else:
break
remind += 4
print(peachs)
#求0—7八个数字所能组成的所有的奇数的个数(数字中没有重复数,例11不算),输出这些数,两种方法效率比较,第二种效率优,第一种简短
from datetime import datetime
start = datetime.now() ##效率比较
lst = []
for i in range(76543210):
if i&1:
i = str(i)
if len(set(i)) == len(i):
if '8' not in i and '9' not in i:
lst.append(i)
delta = (datetime.now()-start).total_seconds()
print(delta)
print(len(lst))
print('~~~~~~~~~~~~~~~~~'*5)
start = datetime.now() #当作8进制计数[0,7],只要去重就可以了
bina = [0]
count = 0
nums = []
maxs = int('76543210',8)
while True:
bina[0] += 1
for i in range(len(bina)):
if bina[i] == 8: #加flag优化,一次没变直接跳出循环
if len(bina) == i+1:
bina.append(0)
bina[i] = 0
bina[i+1] += 1
count += 1
if count & 1:
if (len(bina) == len(set(bina))):
nums.append(''.join(map(str,bina[::-1])))
if count == maxs:
break
delta = (datetime.now()-start).total_seconds()
print(delta)
print(len(nums))
'''只求个数的话:4*6*5*4*3*2*1*7 + 4*6*5*4*3*2*6 + 4*6*5*4*3*5 + 4*6*5*4*4 + 4*6*5*3 + 4*6*2 + 4*1'''
sum = 0
for i in range(7):
tmp = 1
num = 6
for j in range(i):
tmp *= num
num -= 1
sum += 4*tmp*(i+1)
print(sum)
print('~~~~~~~~~~~~~~~~~'*5)
#输出2进制序列 0,1,10,11,100,101,110,111,1000,8进制同样适用,只修改一个数
bina = [0]
count = 0
nums = []
while True:
bina[0] += 1
for i in range(len(bina)):
if bina[i] == 2:
if len(bina) == i+1:
bina.append(0)
bina[i] = 0
bina[i+1] += 1
num = 0
for i in range(len(bina)):
num += bina[i]*10**i
nums.append(num) #nums.append(''.join(map(str,bina[::-1])))
count += 1
if count == 10:
break
print(nums)
print(bina)