约瑟夫问题的Python和C++求解方法

| 收藏本文 下载本文 作者:Shinnki

下面是小编整理的约瑟夫问题的Python和C++求解方法(共含7篇),希望能帮助到大家!同时,但愿您也能像本文投稿人“Shinnki”一样,积极向本站投稿分享好文章。

约瑟夫问题的Python和C++求解方法

篇1:约瑟夫问题的Python和C++求解方法

作者:prehistoric 字体:[增加 减小] 类型: 时间:-08-20

这篇文章主要介绍了约瑟夫问题的Python和C++求解方法,通过其示例我们也可以看出如今写法最简洁的编程语言和最复杂的语言之间的对比:D 需要的朋友可以参考下

么是约瑟夫问题?

约瑟夫问题是一个有趣的数学游戏,游戏规则如下:

1、N个人围成一个圈,编号从1开始,依次到N,

2、编号为M的游戏参与者开始报数,报数从1开始,后面的人报数接龙,直到K为止,报数为K的人将出局。

3、出局者的下一个玩家接着从1开始报数,如此循环,直到剩下一个玩家时游戏结束,这个玩家就是游戏获胜者。

那么问题来了,哪个编号是游戏获胜者呢?

下面通过简单的几行python代码来解决这个问题:

#!/usr/bin/env python # Joseph Problem def joseph(total, begins, count): queue = range(1, total + 1) death = (begins + count - 2) % len(queue) for times in range(total - 1): print ‘out: ‘, queue[death] del queue[death] death = (death + count -1) % len(queue) print ‘survivor: ‘, queue[0]

joseph函数中,参数total即上面提到的N,begins即M,count及K,每次循环报数out一个编号,最后剩下的survivor便是游戏获胜者,

而C++的通常实现方法如下:

#include using namespace std;void main(){ int N=0,C=0; cout<<“Please enter the number of people:N=”; cin>>N; cout<<“Please enter:C=”; cin>>C; int i=0,j=0,n=N,s=0; int *a=new int [N]; for (i=0;i”; } else { cout<

这是C++语言常见的机试题目,以下程序实现从控制台输入人数N,C并将剔除出队列的人员编号按顺序输出到控制台上。

篇2:python求解水仙花数的方法

作者:上大王 字体:[增加 减小] 类型:转载

这篇文章主要介绍了python求解水仙花数的方法,较为详细的分析了水仙花数问题的概念与对应解决方法的实现技巧,需要的朋友可以参考下

本文实例讲述了python求解水仙花数的方法,分享给大家供大家参考。具体如下:

一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数。

#!/usr/bin/pythondef get_flower(n, ofile): D_pow=[pow(i,n) for i in range(0,10)] V_min=1*pow(10,n-1) V_max=sum((9*pow(10,x) for x in range(0,n))) T_count=0 print D_pow, V_max, V_min nums=[1]+[0]*(n-1) print ‘Start:‘, nums idx=n-1 tmp_l=[0]*10 while True: nums[idx]+=1 if nums[idx]<10: j=idx+1 while j=V_min: T_count+=1 #test if is flower #print ‘do test:‘, ‘‘.join(map(str,nums)) k=0 while k<10: tmp_l[k]=0 k+=1 N=0 for k in nums: tmp_l[k]+=1 N+=1 while N>0: p=v%10 if tmp_l[p]>0:tmp_l[p]-=1N-=1 else:break v/=10 if N==0: print >>ofile, ‘hit‘, sum((D_pow[x] for x in nums)) idx=n-1 elif idx==0: print ‘done‘ break else: idx-=1 print ‘t_count‘, T_countif __name__ == ‘__main__‘: with file(‘./f.txt‘, ‘wb‘) as o: get_flower(21, o) #get_flower(3, o)

希望本文所述对大家的Python程序设计有所帮助,

篇3:物理极值问题的求解方法2

物理极值问题的求解方法2

三、用一元二次方程判别式求解极值问题

在中学代数中曾学过,对于一个一元二次方程,当它的判别式B2-4AC≥0时,此方程有实数解。若我们在解物理习题时能选择适当的物理量作为未知量。使其成为一个一元二次方程,巧妙地利用判别式可解决极值问题。

例1.一个质量为m的电子与一个静止的质量为M的原子发生正碰,碰后原子获得一定速度,并有一定的能量E被贮存在这个原子内部。求电子必须具有的最小初动能是多少?

分析与解:设电子碰前的速度为υ1,碰后的速度为,静止的原子被碰后的速度为。

由动量守恒定律有 (1)

由能量守恒有 (2)

在以上两个方程中,有三个未知数,υ1、、,一般的同学认为少一个方程,难以求解。但由(1)式解出代入(2)

可得:

进一步整理可得:(M+m)m-2m2υ1+(m-M)mυ12+2ME=0

此式是关于的'一元二次方程,因电子碰后的速度必为实数,所以此方程的判别式B2-4AC≥0 即

4m4-4(M+m)m[(m-M)m+2ME]≥0

根据上式整理可得:

所以电子必须具有的最小的初动能是

例2.如图2-1所示,顶角为2θ的光滑圆锥,置于磁感应强度大小为B,方向竖直向下的匀强磁场中,现有一个质量为m,带电量为+q的小球,沿圆锥面在水平面作匀速圆周运动,求小球作圆周运动的轨道半径。

分析与解:小球在运动时将受重力mg,圆锥面对球的弹力N,及洛仑兹力f的作用,如图2-2所示。设小球作匀速圆周运动的轨道半径为R,速率为υ。

由正交分解可得

联立(1)、(2)试可得

上式有υ、R两个未知量,似乎不可解,但因为是求极值问题,可用一元二次方程判别式求解。因为υ有实数解,由B2-4AC≥0

∴小球作圆周运动的最小半径为

例3.在掷铅球的运动中,如果铅球出手时距地面的高度为h,速度为υ0,求υ0与水平方向成何角度时,水平射程最远?并求此最大的水平射程Xmax。

分析与解:以出手点为坐标原点,可分别列出水平方向与竖直方向的位移方程。

上式为关于tgθ的一元二次方程。若tgθ存在实数解,则判别式B2-4AC≥0

解出结果后,我们可联系实际进行如下验证。设出手高度h=0,

θ=45°。这就是我们过去曾经知道的一个物体做斜抛运动,当θ=45°时其射程最远。

篇4:物理极值问题的求解方法1

随着教改的不断深入,物理教学更加结合实际,物理习题的题型不断拓宽。在中学物理竞赛及高考试卷中都出现了一些具有一定难度的求极值问题。求极值的一般方法是用导数求解。但中学生还没有学过关于异数的数学知识。本专题将分若干小专题,分别介绍符合中学生数学基础的解决极值问题的方法。

一、几何法求极值

在初中几何中我们曾经学过“点到直线的距离以垂线为最短。”此结论对于求极小值问题,是一条捷径。

例1.如图1-1所示,船A从港口P出发去拦截正以速度υ0沿直线航行的船B 。P与B所在航线的垂直距离为a,A起航时与B船相距为b,b>a 。如果略去A船起动时的加速过程,认为它一起航就匀速运动。则A船能拦截到B船的`最小速率为多少?

分析与解:分析本题是两个运动物体求它们之间的相对位置的问题。若以地球为参照系,两个物体都运动,且运动方向不一致,它们之间的相对位置随时间变化的关系比较复杂,一时不容易做出正确的判断与解答。但如果把参照系建立在某一运动的物体上,(如B上)由于以谁为参照系,就认为谁不动,此题就简化为一个物体,(如A)在此运动参照系的运动问题了。当然解一个物体的运动问题比解两个物体都运动的问题自然容易多了。

以B为参照系,B不动,在此参照系中A将具有向左的分速度υ0,如图1-2所示。在此参照系中A只要沿着PB方向就能拦截到B 。应用“点到直线的距离以垂线为最短”的结论。过O点作PB的垂线,交PB于E点,OE即为A船对地的速度的最小值υA,在△AOE中

∵υA=υ0Sinθ 而

∴,由于灵活运用了几何知识,使较为复杂的问题,变为简单的几何问题了。

例2.如图1-3所示,重为G的物体与水平地面的动摩擦因数为μ,欲以一个拉力F使物体沿地面匀速前进。问F与水平地面的夹角θ为何值时最省力?这个最小拉力是多大?

分析与解:画出物体的受力分析图,如图1-4所示。物体受到四个力的作用。有重力G、拉力F、地面的支持力N及地面对物体的滑动摩擦力f,其中f=Nμ。这四个力为共点力,合力为零。可将N与f合成为一个力N′,N与f的作用将被N′等效,N′与N、f的关系满足平行四边形法则。再画出物体受N′、G、F的力的矢量三角形,如图1-5所示。N′的方向如图,应用“点到直线

[1] [2]

篇5:物理极值问题的求解方法2

三、用一元二次方程判别式求解极值问题

在中学代数中曾学过,对于一个一元二次方程,当它的判别式B2-4AC≥0时,此方程有实数解。若我们在解物理习题时能选择适当的物理量作为未知量。使其成为一个一元二次方程,巧妙地利用判别式可解决极值问题。

例1.一个质量为m的电子与一个静止的质量为M的原子发生正碰,碰后原子获得一定速度,并有一定的能量E被贮存在这个原子内部。求电子必须具有的最小初动能是多少?

分析与解:设电子碰前的'速度为υ1,碰后的速度为,静止的原子被碰后的速度为。

由动量守恒定律有 (1)

由能量守恒有 (2)

在以上两个方程中,有三个未知数,υ1、、,一般的同学认为少一个方程,难以求解。但由(1)式解出代入(2)

可得:

进一步整理可得:(M+m)m-2m2υ1+(m-M)mυ12+2ME=0

此式是关于的一元二次方程,因电子碰后的速度必为实数,所以此方程的判别式B2-4AC≥0 即

4m4-4(M+m)m[(m-M)m+2ME]≥0

根据上式整理可得:

所以电子必须具有的最小的初动能是

例2.如图2-1所示,顶角为2θ的光滑圆锥,置于磁感应强度大小为B,方向竖直向下的匀强磁场中,现有一个质量为m,带电量为+q的小球,沿圆锥面在水平面作匀速圆周运动,求小球作圆周运动的轨道半径。

分析与解:小球在运动时将受重力mg,圆锥面对球的弹力N,及洛仑兹力f的作用,如图2-2所示。设小球作匀速圆周运动的轨道半径为R,速率为υ。

由正交分解可得

联立(1)、(2)试可得

上式有υ、R两个未知量,似乎不可解,但因为是求极值问题,可用一元二次方程判别式求解。因为υ有实数解,由B2-4AC≥0

∴小球作圆周运动的最小半径为

例3.在掷铅球的运动中,如果铅球出手时距地面的高度为h,速度为υ0,求υ0与水平方向成何角度时,水平射程最远?并求此最大的水平射程Xmax。

分析与解:以出手点为坐标原点,可分别列出水平方向与竖直方向的位移方程。

上式为关于tgθ的一元二次方程。若tgθ存在实数解,则判别式B2-4AC

[1] [2]

篇6:具有多种形式信息的指派问题的求解方法

具有多种形式信息的指派问题的求解方法

针对具有多种形式信息的多目标指派问题,给出了一种指派问题求解方法.首先描述了区间数、序值、序区间和语言评价等多种信息形式及相关概念;然后通过计算各人员指派信息与正负理想点的距离,得到将某项任务指派给某个人员完成的“机会成本”和“效益”,从而得到指派问题总“机会成本”矩阵和总“效益”矩阵,在此基础上建立了使总成本最小及总效益最大为目标的指派问题数学模型,并采用匈牙利法进行求解.最后,通过一个算例分析说明了本文给出方法的`可行性和有效性.

作 者:刘洋 樊治平LIU Yang FAN Zhi-ping  作者单位:东北大学,工商管理学院,辽宁,沈阳,1100041 刊 名:系统工程  ISTIC PKU英文刊名:SYSTEMS ENGINEERING 年,卷(期): 26(5) 分类号:C934 N945 关键词:指派问题   多种形式信息   理想点   成本矩阵   效益矩阵   匈牙利法  

篇7:一种求解数据校正问题的基于经验增强的方法

一种求解数据校正问题的基于经验增强的方法

摘要:基于机理模型的数据校正问题中,过程系统比较复杂时就要面临求解大规模非线性规划问题.如果直接求解,由于方程维数大且为非线性,问题自由度大,因此求解难度较高,容易导致求解收敛失败.数据校正问题的特点是当测量变量的测量值发生变化时对同一过程对象模型重复地进行求解计算.基于此特点,今提出了一种基于经验增强的求解方法.此方法通过合理地利用以前求解的经验,以达到提高收敛性的效果.设计了此方法的框架及其具体实现步骤,并应用脱丙烷塔和脱丁烷塔的.联塔系统与乙烯分离系统进行测试,结果显示相比于传统求解方法,此方法具有很好的收敛性. 作者: 张正江[1]  邵之江[2]  陈曦[2]  方学毅[2]  王可心[2]  钱积新[2] Author: ZHANG Zheng-jiang[1]  SHAO Zhi-jiang[2]  CHEN Xi[2]  FANG Xue-yi[2]  WANG Ke-xin[2]  QIAN Ji-xin[2] 作者单位: 浙江大学,工业控制技术国家重点实验室,工业控制研究所,浙江杭州310027;温州大学,物理与电子信息工程学院,浙江温州325035浙江大学,工业控制技术国家重点实验室,工业控制研究所,浙江杭州310027 期 刊: 高校化学工程学报   ISTICEIPKU Journal: JOURNAL OF CHEMICAL ENGINEERING OF CHINESE UNIVERSITIES 年,卷(期): 2011, 25(3) 分类号: N37 关键词: 数据校正    机理模型    经验增强    收敛性    机标分类号: P63 TP3 机标关键词: 求解方法    数据    正问题    经验    增强    Problems    Data Reconciliation    乙烯分离系统    线性规划问题    高收敛性    过程对象模型    非线性    直接求解    脱丁烷塔    脱丙烷塔    特点    收敛失败    实现步骤    机理模型    过程系统 基金项目: 国家重点基础研究发展计划项,国家自然科学基金,浙江省自然科学基金 一种求解数据校正问题的基于经验增强的方法[期刊论文]  高校化学工程学报 --2011, 25(3)张正江  邵之江  陈曦  方学毅  王可心  钱积新基于机理模型的数据校正问题中,过程系统比较复杂时就要面临求解大规模非线性规划问题.如果直接求解,由于方程维数大且为非线性,问题自由度大,因此求解难度较高,容易导致求解收敛失败.数据校正问题的特点是当测量变量的...

物理极值问题的求解方法2

工伤赔偿问题求解

C++经典面试问题

Python实现高效求解素数代码实例

RC4文件加密的python实现方法

python使用装饰器和线程限制函数执行时间的方法

Python的Bottle框架中返回静态文件和JSON对象的方法

Python写的Tkinter程序屏幕居中方法

求解随机凸规划概率约束问题的对偶算法

python在windows和linux下获得本机本地ip地址方法小结

约瑟夫问题的Python和C++求解方法(通用7篇)

欢迎下载DOC格式的约瑟夫问题的Python和C++求解方法,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
点击下载本文文档