试题A:门牌制作
答案:624
count = 0 for i in range(1, 2021): n = i while n != 0: m = n % 10 n = n // 10 if m == 2: count += 1 print(count)
试题B:寻找2020
答案:2481215
def check(s): return s == '2020' matrix = [] s = input() while '1' not in s: matrix.append(list(s)) s = input() n,m = len(matrix),len(matrix[0]) ans = 0 for i in range(n): for j in range(m): if i + 3 < n and check(matri[i][j] + matrix[i+1][j] + matrix[i+2][j] + matrix[i+3][j]): ans += 1 if j + 3 < m and check(matrix[i][j:j+4]): ans += 1 if i + 3 < n and j + 3 < m and check(matri[i][j] + matrix[i+1][j+1] + matrix[i+2][j+2] + matrix[i+3][j+3]): ans += 1 print(ans)
试题C:跑步锻炼
答案:8879
import datetime distances = 0 start_time = datetime.datetime(year=2000, month=1, day=1) # 2000年1月1日00:00 周六 dela = datetime.timedelta(days=1) end_time = datetime.datetime(year=2020, month=10, day=1) # 到2020年10月2日00:00 这样包括10月1号 周四 time = end_time - start_time # time为一个timedelta对象 # start_time.weekday() 返回数字0-6,0代表星期一,依次类推 5 代表星期六 while start_time <= end_time: if start_time.day == 1 or start_time.weekday() == 0: # 月初或周一 distances += 2 else: distances += 1 start_time += dela print(distances)
试题D:蛇形填数
答案:761
i = 0 j = 0 num = 0 while True: num += 1 if i == 19 and j == 19: break if (i+j)&1: i += 1 if j > 0: j -= 1 else: j += 1 if i > 0: i -= 1 print(num)
试题E:排序
答案:100
def bubble_sort(arr): num = 0 for i in range(len(arr)-1,0,-1): for j in range(i): if arr[j] > arr[j+1]: num += 1 arr[j],arr[j+1] = arr[j+1],arr[j] return num print(bubble_sort(list('jonmlkihgfedcba')))
试题F:成绩统计
n = int(input()) num1 = 0 num2 = 0 for _ in range(n): score = int(input()) if score >= 60: num1 += 1 if score >= 85: num2 += 1 print(str(round(num1*100/n))+'%') print(str(round(num2*100/n))+'%')
试题G:单词分析
cnt = [0]*26 s = input() for alpha in s: cnt[ord(alpha) - ord('a')] += 1 k = 0 for i in range(26): if cnt[i] > cnt[k]: k = i print(chr(k+ord('a'))) print(cnt[k])
试题H:数字三角形
n = int(input()) matrix = [[0]*( _ + 1 ) for _ in range(n)] for i in range(n): tmp = [int(a) for a in input().split(' ')] matrix[i] = tmp dp = matrix[:] for i in range(1,n): for j in range(i+1): if j == 0: dp[i][j] += dp[i-1][j] elif j == i: dp[i][j] += dp[i-1][j-1] else: dp[i][j] += max(dp[i-1][j],dp[i-1][j-1]) if n&1: print(dp[n-1][n//2]) else: print(max(dp[n-1][n//2-1],dp[n-1][n//2]))
试题I:平面切分
n = int(input()) line = [] for _ in range(n): tmp = [int(a) for a in input().split(' ')] line.append(tuple(tmp)) line = list(set(line)) n = len(line) judge = lambda pos1,pos2 : abs(pos1[0] - pos2[0]) + abs(pos1[1] - pos2[1]) < 1e-12 ans = 2 for i in range(1,n): k1,b1 = line[i] sec = [] for j in range(i): k2,b2 = line[j] if k2 == k1: continue pos_x = (b2-b1)/(k1-k2); pos_y = k1*pos_x + b1 sec.append((pos_x,pos_y)) m = len(sec) tmpans = m+1 if m < 2: ans += tmpans continue sec = sorted(sec,key=lambda x:x[0]) for i in range(1,m): if judge(sec[i-1],sec[i]): tmpans -= 1 ans += tmpans print(ans)
试题J:装饰珠
def eliminate(bead, max_dic): for i in bead: if i[1] > max_dic[i[0]]: for _ in range(i[1] - max_dic[i[0]]): i.pop() i[1] -= 1 if len(bead[-1]) == 2: res = bead.pop()[0] del dic[res] del max_dic[res] # print(bead) N = [] for i in range(6): N.append(list(map(int, input().split()))) dic = {} max_dic = {} for i in N: for j in i[1:]: if j in dic: dic[j] += 1 max_dic[j] += 1 else: dic[j] = 1 max_dic[j] = 1 # print(dic) for i in range(max(dic) - 1, 0, -1): if i not in max_dic: max_dic[i] = max_dic[i + 1] max_dic[i] += max_dic[i + 1] # print(max_dic) M = int(input()) bead = [] for i in range(M): bead.append(list(map(int, input().split()))) eliminate(bead, max_dic) count = 0 while count != max_dic[1] + 2 * len(bead): te = None tmp = 0 for i in range(len(bead) - 1, -1, -1): if len(bead[i]) == 3: if tmp < bead[i][-1]: te = i tmp = bead[i][-1] continue if tmp < bead[i][-1] - bead[i][-2]: te = i tmp = bead[i][-1] - bead[i][-2] # print(dic) # print(max_dic) if max_dic[bead[te][0]] > dic[bead[te][0]] and bead[te][0] != max(dic): max_dic[bead[te][0] + 1] -= max_dic[bead[te][0]] - dic[bead[te][0]] for i in range(max_dic[bead[te][0]] - dic[bead[te][0]]): bead[bead[te][0]].pop() if len(bead[-1]) == 2: res = bead.pop()[0] del dic[res] del max_dic[res] # print(bead) Sum = 0 for i in bead[::-1]: if Sum + i[1] <= max_dic[i[0]]: Sum += i[1] else: Sum += i[1] for j in range(Sum - max_dic[i[0]]): Sum -= 1 i.pop() i[1] -= 1 count = 0 for i in range(len(bead)): count += len(bead[i]) if count < max_dic[1] + 2 * len(bead): break Num = 0 for i in bead: Num += i[-1] print(Num)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)