鱼C论坛

 找回密码
 立即注册
楼主: jerryxjr1220

[技术交流] python小练习(058):10来行代码求解约瑟夫环问题

[复制链接]
发表于 2017-9-17 09:44:58 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-23 21:44:04 | 显示全部楼层
怎么做到的呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-13 21:45:39 | 显示全部楼层
不懂怎么写,看一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-21 19:46:52 | 显示全部楼层
从连接跳过来的,看看,学习一下.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-21 12:23:03 | 显示全部楼层
有思路了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-21 14:43:13 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-26 15:26:27 | 显示全部楼层
def yue(n,k):
    list_y = [i for i in range(n)]
    t = list_y.pop(k-1)
    while len(list_y) > 1:
        if len(list_y) < k:
            t1 = (k-1)%len(list_y)
            t = list_y.pop(t1)
            list_y = list_y[t1:] + list_y[:t1]
        else:
            list_y = list_y[k-1:] + list_y[:k-1]
            t = list_y.pop(k-1)
    print(list_y.pop()+1)
yue(100,3)
yue(10000,6)
        
        
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-26 17:43:59 | 显示全部楼层
效率一点都比不上你
        
def yue1(n,k):
    list_x = [i for i in range(n)]
    list_y = list_x[:]
    t = k-1
    while len(list_x) > 1:
        if len(list_x)<k:
            list_x.pop(t1)
            t1 = (t1+k-1)%(len(list_x))
        else:
            for i,j in enumerate(list_x):
                if i%k == t:
                    c = i
                    list_y.remove(j)
            t1 = t = (c + k - len(list_x))
            list_x = list_y[:]
    print(list_x.pop()+1)
        
yue1(100000,6)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-1 14:17:57 | 显示全部楼层
我是来抄答案的!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-21 20:45:36 | 显示全部楼层
la'la
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-21 21:29:03 | 显示全部楼层
看一看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-27 11:19:13 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-7 17:16:22 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-10 12:45:33 | 显示全部楼层
我想看看,源码,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-10 13:47:00 | 显示全部楼层
我来看看结果。我的想法是,定义两个变量,一个变量为人数n,一个变量为k,然后循环N次,每次K+=k,最终K/n的余数就是最后剩下的人
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-12 18:12:27 | 显示全部楼层
看看帖子里藏了啥好东西~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-13 08:17:06 | 显示全部楼层
看看帖子里藏了啥好东西~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-22 21:19:43 | 显示全部楼层
    num = int(input('多少人围成一圈:'))
    list1 = list(range(1, num + 1))
    n = 2
    while len(list1) > 1:
        list1.pop(n)
        n = (n + 2) % len(list1)
    print('最后留下的是原来第%d号'%list1[0])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-23 14:04:25 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-23 17:23:33 | 显示全部楼层
本帖最后由 badaoqingchen 于 2018-4-23 17:32 编辑
x = range(1, n+1)

while 1:
    if len(x) == 1:
        print x[0]
        break
    if len(x) == 2:
        print x[1]
        break
    x1 = len(x)%3
    x0 = []
    for i in x:
        if (x.index(i)+1) %3 == 0:
            print i
            x0.append(i)

    for i in x0:
        x.remove(i)
            
    for i in range(x1):
        x.insert(0,x[-1])
        x = x[:-1]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-15 04:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表