2018-09-21

今天的编程题,是 农夫杀猪。
农夫把100只猪,编号从1到100,围成一圆圈,自己坐在圆心的转椅上端着AK47,
从一开始数,1,2,3,每次数到3 就开枪打死那只猪,
这样第一个死的,就是3号,第二个就是6号,直到99 号,(而后100号,1号,不杀),进入了
第二圈2号猪被杀,(已经死去的不算,4,5号不杀)7号被杀,,
就是这样,一直下去,最后剩余一个。
questions
1、没死的,这个猪,编号是多少?
2、请用数组或者列表等一维线性表,给出被杀的99头猪的死亡顺序
3、请给出转椅转了多少圈,一圈是360度。
python code

#100 pigs
pig=list(range(1,101))
#print(pig)

#record the dead list
dead=list()

# record How many laps?
lcount=2

while len(pig)>1:
    #print(pig)
    x1 =pig.pop(0)
    pig.append(x1)
    
    x2 =pig.pop(0)
    pig.append(x2)
#shoot
    killed=pig.pop(0)
    dead.append(killed)
    
#answer 1
print(pig)

#answer 2
print(dead)

# Use monotonic changes, record the number of laps, plus the last lap
kk =dead[0]
for i in dead:
    #print(i)
    if i<kk:
        lcount+=1
    kk=i

#answer 3    
print('Number of laps ='+str(lcount))


$python main.py
[91]
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 2, 7, 11, 16, 20, 25, 29, 34, 38, 43, 47, 52, 56, 61, 65, 70, 74, 79, 83, 88, 92, 97, 1, 8, 14, 22, 28, 35, 41, 49, 55, 62, 68, 76, 82, 89, 95, 4, 13, 23, 32, 44, 53, 64, 73, 85, 94, 5, 19, 37, 50, 67, 80, 98, 17, 40, 59, 86, 10, 46, 77, 26, 71, 31, 100, 58]
Number of laps =11

注,有一圈空转是,58,91,而后下一圈,58 被杀。
4 ,如果计算枪扫描过的角度,就是(圈数-1)乘以360,而第十一圈其实就转到58的位置,所以,要加上。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我的师妹是医科大学毕业,我们在同一年考试的心理咨询师,不过我考二级,她考三级,我们经常讨论心理学的问题,不过每次她...
    时义轩阅读 622评论 0 50
  • 《吉祥三宝》父亲心梗病逝,留下99岁的母亲和妻儿,媒体纷纷悼念 “爸爸” “哎” “太阳出来月亮回家了吗?” “对...
    木子报告阅读 434评论 0 0
  • 今天,发生了挺多事。 师傅得陪伴,陪我走一条条街,看一片片风景,鼓励我,支持我,激励我。 爱人,一定要找一个你爱的...
    月墨阅读 245评论 0 0
  • 序号 学号 姓名 01 02 侯淑洁 02 09 王志文 03 ...
    应数二班田玉峰阅读 209评论 0 1