《常用算法(带答案).docx》由会员分享,可在线阅读,更多相关《常用算法(带答案).docx(16页珍藏版)》请在三一办公上搜索。
1、1 .累加输入一个整数n,求l+2+3+.+n的和。输入:一个整数输出:一个整数样例输入:10样例输出:55测试输入:4测试输出:10n=int(input()S=Oforiinrange(n+l):s+=iprint(s)2 .累乘输入一个整数n,求l*2*3+.*n的积。输入:一个整数输出:一个整数样例输入:5样例输出:120测试输入:10测试输出:3628800n=int(input()t=lforiinrange(lzn+l):t*=iprint(t)3 .计数输入一个整数n,统计ln范围内能同时被3和7整数的数有几个?输入:一个整数输出:一个整数样例输入:100样例输出:4测试输入:
2、200测试输出:9n=int(input()js=0foriinrange(n+l):ifi%3=0andi%7=0:js+=lprint(js)4.最大值最小值输入一行整数,求这些整数中的最大值和最小值及其位置。输入:一行整数输出:最大值及其位置和最小值及其位置样例输入:346109样例输出:最大值10,位置在第4个,最小值3,位置在第1个!测试输入:10203040750测试输出:最大值50,位置在第6个,最小值7,位置在第5个!a=list(m叩(int,input().split()zd=aO;zx=aO;zdindex=O;zxindex=Oforiinrange(ljen(a):i
3、faizd:zd=aizdindex=iifaiord(z):n=n-26s=s+chr(n)print(s)14 .最大公约数、最小公倍数输入两个整数m和n,请使用辗转相除法输出m和n的最大公约数和最小公倍数。输入:两个整数m和n输出:每次循环的过程(每项占5歹Q和最大公约数及最小公倍数样例输入:128样例输出:mnr1284840最大公约数:4最小公倍数:24测试输入:208测试输出:mnr2084840最大公约数:4最小公倍数:40m,n=map(int,input().split()print(,:5sr5s5s.format(,m,n7r)mn=m*nWhiIeTrue:r=m%np
4、rint(5d5d5d,.format(mznjr)ifr=0:breakm,n=nzrPrintr最大公约数:%d,%n)Printc最小公倍数:%d%(mnn)15 .选择法排序输入一个整数的列表,请用选择法对列表进行从小到大的排序。输入:一个整数的列表输出:每次循环的过程及结果样例输入:5,3,8,7,2样例输出:第1轮交换后:2,3,8,7,5第2轮交换后:2,3,8,7,5第3轮交换后:2,3,5,7,8第4轮交换后:2,3,5,7,8最后结果为:2,3,5,7,8测试输入:10,503,7测试输出:第1轮交换后:3,50,10,7第2轮交换后:3,7,10,50第3轮交换后:7,1
5、0,50最后结果为:3,1,10,50a=eval(input()foriinrange(len(a)-l):P=iforjinrange(i+ljen(a):ifajaj+l:aOLaO+l=aj+lUPrint(第轮交换后:.format(i+l,a)Print(最后结果为:,,a)17 .插入排序输入一个整数的列表,请用插入排序方法对列表进行从小到大的排序。输入:一个整数的列表输出:每次循环的过程及结果样例输入:5,3,8,7,2样例输出:第1轮交换后:3,5,8,7,2第2轮交换后:5,8,7,2第3轮交换后:5,7,8,2第4轮交换后:2,3,5,7,8最后结果为:2,3,5,7,8
6、测试输入:10,50,3,7测试输出:第1轮交换后:10,50,3,7第2轮交换后:10,50,7第3轮交换后:7,10,50最后结果为:3,7,10,50a=eval(input()foriinrange(ljen(a):forjinrange(i,0,-l):ifajaj-l:ajLaU-l=aj-l,ajPrint(第轮交换后:.format。,a)Printe最后结果为:,a)输入一个整数的列表,再输入一个整数X,在列表中按顺序查找是否存在X,若存在输出“找到了,在第*位!,若不存在则输出“不存在!”。输入:一个整数的列表和一个整数X输出:“找到了,在第*位!”或“不存在!”样例输入:
7、5,3,8,7,22样例输出:找到了,在第5位!测试输入:5,3,8,7,29测试输出:不存在!a=eval(input()x=int(input()f=lforiinrange(len(a):ifai=:f=0breakiff=0:PriM找到了,在第i位!,%(i+l)else:PrintC不存在!,)19.二分法查找输入一个整数的列表,再输入一个整数X,在列表中使用二分法查找是否存在X,若存在输出“找到了,在第*位!,若不存在则输出“不存在!”。输入:一个整数的列表和一个整数X输出:排序后、每次缩小范围后的情况,最后显示“找到了,在第*位!”或“找不到!”样例输入:5,3,8,7,2,1
8、0,1,4,2010样例输出:排序后:1,2,3,4,5,7,8,10,20缩小范围为:5-8缩小范围为:78找到了,在第6位!测试输入:5,3,8,7,29测试输出:排序后:2,3,578缩小范围为:34缩小范围为:44缩小范围为:54找不到!a=eval(input()x=int(input()al=sorted(a)b=O;t=len(al)-lPrint(排序后:.format(al)whilebalm:b=m+lelse:t=m-lPriM缩小范围为:,.fOrmat(b,t)ifbt:Print(找不到!)20.插入(1866)输入一行数,输入要插入的位置n和要插入的数X,编写程序
9、实现将X插入到第n位,最后输出插入后的一组数输入:第一行若干个整数,第二行两个整数输出:若干个整数样例输入:35269210样例输出:3105269测试输入:1030346511测试输出:103034611a=list(m叩(int,input().split()a.append(0)n,x=map(intjnput().split()foriinrange(len(a)-l,n-2,-l):a=ai-lan-l=xforxina:print(x,end=)21.插入到有序的序列(1867)把一个数插入到一个有序的序列中,使得插入后的序列仍然有序。输入:第一行若干个整数,第二行要插入的整数输出
10、:插入后的有序序列样例输入:3453126755样例输出:插入前:6,12,34,53,75插入后:5,6,12,34,53,75测试输入:34531267525测试输出:插入前:12,34,53,75插入后:6,12,25,34,53,75a=list(map(intjnput().split()x=int(input()a.sort()Printe插入前Oa)P=Oforiinrange(len(a):ifx=10:x=axs=str(x)+sn=n16print(s)27.十六进制转十进制(1520)sr=input()s=0foriinrange(len(sr):x=sriifx=,A:x=axs=s+int(x)*16*(len(sr)-l-i)print(s)