商汤计算机视觉算法笔试编程第一题


#!/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##算法工程师#
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 7 评论
分享
牛客网
牛客企业服务