代码:
·
·
·
·
·
·
·
·
·
M = int(input())N = int(input())if M > N: M, N =N, Mlst = []for n in range(M,N+1): if n % 7 == 0 and n % 5 != 0: lst.append(str(n))print(",".join(lst))
代码:
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
s = input()count = [0]*4for c in s: if c == ' ': count[1] +=1 continue b = ord(c) if ord('A')<=b<=ord('Z') \ or ord('a')<=b<=ord('z'): count[0] +=1 elif ord('1')<=b<=ord('9'): count[2] +=1 else: count[3] +=1for i in count: print(i)
分析:这是约瑟夫环问题,只要在每个元素中记录它开始的位置,把剩下来的元素中记录的位置输出就行。为了简化计算,采用标注形式(把位置值置0)。
代码:
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
n = int(input())lst = list(range(1,n+1)) #构建编号列表count = 0 #出列人员数num = 0 #计数累计p = 0 #位置while count < n -1: #未出列人数超过1人 p %= n #规范列表下标在列表范围内 if lst[p] > 0: #该位置未出列 num += 1 #计数加1 if num == 3: #计数到达3个 lst[p] = 0 #该位置出列 count += 1 #出列人数加1 num = 0 #出列计数复位 p += 1 #列表下标前推1位for i in lst: #打印未出列原位置 if i > 0: print(i)
解说:用列表形式循环计数代码:
·
·
·
·
while 结束条件: p %= n #规范列表下标在列表范围内 #每个元素的处理方法 p += 1 #列表下标前推1位
当检测到元素未出列,那么计数加1:
·
·
if lst[p] > 0: #该位置未出列 num += 1 #计数加1
当检测到计数等于3时:
·
·
·
·
if num == 3: #计数到达3个 lst[p] = 0 #该位置出列 count += 1 #出列人数加1 num = 0 #出列计数复位
分析:由于没有0层,为了简化计算,把大于0的楼层减1作为计算的楼层。电梯升降的层数符合植树算法的只含一端,即楼层相减,结果大于0是上升,小于0是下降。
代码:
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
#楼层输入转换def change(sn): nm = int(sn) if nm > 0: #如果楼层大于0,减1 nm -= 1 return nmlst = list(map(change, input().split(',')))c = 0 #消耗电量for i in range(len(lst)-1): d = lst[i+1] - lst[i] if d > 0: c += d * 1 else: c -= d * 0.3print(c)