商汤计算机视觉算法笔试编程第一题
#!/usr/bin/python # -*- coding: utf-8 -*- '''商汤计算机视觉研究员笔试第一题: 小明找广播 题目内容回忆: n个小朋友排成一圈报数,报数为从1,2,3...k,报到1的人出列,并且不返回队伍中。 报完k后,下一个人重新从1开始报数,同理,报到1的小朋友出列不归队,报到k后重新从1开始报数。 如此循环,直到最后剩下两个小朋友,就可以获得奖品啦~小明想知道最后出列的两个小朋友是原来中的哪两个。 输入: 第一行输入c(<50), 表示测试用例的个数。 接下来c行,每行输入两个数n和k,表示总共有多少个小朋友,以及报数的范围。 输出: 有序输出最后两个小朋友的号码牌。''' import sys def solution(n, k): l = [i+1 for i in range(n)] if len(l)==0 or len(l) ==1: return -1 for i in range( n-2): res = len(l) if res > k: l.remove(l[0]) l = l[k-1:]+l[:k-1] else: if k==res: idx= 0 else: idx = k -1- (res-1)*((k-1)//(res-1)) l.remove(l[0]) l = l[idx:]+l[:idx] if len(l) ==2: return sorted(l) if __name__ == "__main__": c = int(sys.stdin.readline().strip()) for i in range(c): a = sys.stdin.readline().split() print(solution(int(a[0]), int(a[1]) ))
#笔试题目##商汤科技##秋招##Python##算法工程师#