admin管理员组文章数量:1794759
研发工程师
1、丑数
题目描述:给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。
丑数 就是只包含质因数 2、3 和/或 5 的正整数。(1通常被视为丑数)
输入描述:整数n
输出描述:true或false
''' Author : limingx Time : June 19,2022 ''' def func(n): if n == 0: return 'false' if n == 1: return 'true' if n % 2 == 0: return func(n / 2) if n % 3 == 0: return func(n / 3) if n % 5 == 0: return func(n / 5) return 'false' n = int(input()) print(func(n)) 2、皇帝的奏章题目描述:某朝皇帝有大臣n名(1<=n<=1000),分别编号大臣1~n。某日皇帝身体抱恙,奏章堆积如山无法及时一一批阅,便命身旁內侍帮他把奏章按指定顺序排序后再阅。于是皇帝亲自挑选了几个值得信赖的重臣并排好序,要求把他们的奏章按排好的顺序放到前面,其他的按照编号升序排列即可。现在要求你写一个程序来帮皇上解决这个问题,即已知奏章总数和顺序、钦点重臣的排列顺序,求得皇帝查阅奏章的顺序。
输入描述:
第一行输入两个整数p(1<=p<=5000)和q,其中p表示堆积奏章的总数、q表示皇帝钦点重臣数
第二行输入p个数,表示所有按呈递顺序递上来的奏章来自于哪个大臣(大臣编号)
第三行输入q个数,表示皇帝钦点并排好序的重臣编号
输出描述:输出奏章按指定顺序排好序后,皇帝按大臣编号批阅的顺序
''' Author : limingx Time : June 19,2022 ''' a,b=map(int,input().split()) lst1=list(map(int,input().split())) lst2=list(map(int,input().split())) output=[] outstr='' for i in range(0,len(lst1)): bool=1 for j in range(0,len(lst2)): if lst1[i]==lst2[j]: output.append([lst1[i],j]) bool=0 break if bool: output.append([lst1[i],b+lst1[i]]) output=sorted(output,key=lambda x:x[1],reverse=False) for i in output: outstr=outstr+' ' +str(i[0]) print(outstr.strip())优化了一下代码,但最后只通过了20%样例,不知道原因在哪?求广大网友诊断~
''' Author : limingx Time : June 19,2022 ''' a,b = map(int,input().split()) list1 = list(map(str,input().split())) list2 = list(map(str,input().split())) output = [] outstr = [] for i in list1: if i not in list2: output.append(i) output = sorted(output,key=lambda x:x,reverse=False) for i in range(len(output)): list2.append(output[i]) for j in list2: #如果有大臣没有奏章,则跳过 if j in list1: outstr.append(j) print(' '.join(outstr)) 3、尼姆博弈题目描述:你和你的朋友,两个人一起玩 Nim 游戏: 桌子上有一堆石头。你们轮流进行自己的回合,你作为先手。 每一回合,轮到的人拿掉 1 - 3 块石头。拿掉最后一块石头的人就是获胜者。 假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢,返回 true;否则,返回 false 。
输入描述:整数n
输出描述:true或false
''' Author : limingx Time : June 19,2022 ''' n = int(input()) if n%4 == 0: print('false') else: print('true') 4、员工排序题目描述:某公司要针对员工情况统一调薪,现有一个员工列表,包含姓名、职级、工作年限、工资信。现要求将该列表按以下规则重新排序:
1、职级高的排在前面
2、若职级相同,按工资少的排前面
3、若工资相同,工作年限长的排前面
输入描述:第一行输入一个整数n,表示员工列表中员工的人数
接下来的n行,分别输入员工的姓名、职级、工作年限和工资信,各项信用空格分隔
输出描述:输出按要求重新排列的员工列表,每名员工信(姓名、职级、工作年限和工资)占一行
''' Author : limingx Time : June 19,2022 ''' n = int(input()) emps = [[emp[0],int(emp[1]),int(emp[2]),float(emp[3])] for emp in (input().strip().split(' ') for i in range(n))] emps=sorted(emps,key=lambda x:(x[1],-x[3],x[2]), reverse=True) for emp in emps: print('{} {} {} {:.2f}'.format(*emp)) #print(i[0],i[1],i[2],'%.2f'%i[3]) #这种写法也可 5、水仙花数题目描述:如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。
例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数
输入描述:输入一个整数a与一个整数b, 用空格分隔
输出描述:输出a到b区间内的水仙花数
''' Author : limingx Time : June 19,2022 ''' a,b = map(int,input().split()) for i in range(a,b+1): m = int(i%10) n = int((i/10)%10) c = int(i/100) if m*m*m+n*n*n+c*c*c == i: print(i) 6、字符串查找和比较题目描述:写函数实现如下功能,给定字符串A和B,输出A和B中的最长公共子串。比如A="aocdfe" B="pmcdfa" 则输出"cdf"。
输入描述:输入待处理的两个字符串 str1,str2
输出描述:找出两个字符串最长的公共子串
''' Author : limingx Time : June 19,2022 ''' str1 = str(input()) str2 = str(input()) def get(str1,str2): s1 = len(str1) s2 = len(str2) record = [[0 for i in range(s2+1)] for j in range(s1)] maxNum = 0 p = 0 for i in range(s1): for j in range (s2): if str1[i] == str2[j]: record[i+1][j+1] = record[i][j]+1 if record[i+1][j+1]>maxNum: maxNum = record[i+1][j+1] p = i return maxNum,str1[p+1-maxNum:p+1] [A,B] = get(str1,str2) print(B) 7、股票报价题目描述:给定某股票每日的报价和一个目标值,请在所有报价中找出和为目标值的那两天的报价,并打印出对应的报价。
假设每种输入只会对应一个答案,且每日的报价不会重复。
你需要按报价从小到大的顺序打印答案。
输入描述:输入:第一行是某股票每日的报价,这些报价是正整数且用空格相隔,例如:17 20 33
第二行是目标值,例如:37
输出描述:输出:对应的报价,报价之间用空格相隔,例如:17 20
''' Author : limingx Time : June 19,2022 ''' m = list(map(int,input().split())) n = int(input()) for i in range(len(m)): for j in range(i+1,len(m)): if m[i]+m[j] ==n: print(sorted([m[i],m[j]],reverse=False)[0], sorted([m[i],m[j]],reverse=False)[1]) ''' 或者输出改成以下格式: if m[i]<m[j]: print(m[i],m[j]) else: print(m[j],m[i]) ''' 8、罗马数字转整数题目描述:
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:
I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给定一个罗马数字,将其转换成整数。
输入描述:罗马数字
输出描述:转换后的整数
''' Author : limingx Time : June 19,2022 ''' str0 = input() S = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000,'a':4,'b':9,'c':40,'d':90,'e':400,'f':900} def func(n): num=0 s1=n.replace('IV','a') s2=s1.replace('IX','b') s3=s2.replace('XL','c') s4=s3.replace('XC','d') s5=s4.replace('CD','e') s6=s5.replace('CM','f') for i in range(len(s6)): num = num + S[s6[i]] return num print(func(str0)) 9、进程排序题目描述:某系统中有n个进程,每个进程都有自己唯一的进程id(PID),同时每个进程最多还有一个父进程,父进程id为(PPID),和一个或多个子进程。
若某进程没有父进程,则PPID为0。 当某一进程被终止时,其子进程也将被终止。
现给出进程id列表和起对应的父进程id列表,当要终止某一进程时,计算最终会终止哪些进程,并将要终止的PID按升序排列。
输入描述:第一行输入两个整数n和k,n表示当前系统中运行的进程数;k表示要终止进程的PID。
第二行输入n个正整数,表示进程列表,每个整数表示进程的PID。
第三行输入n个正整数,表示进程列表中的进程对应的父进程PPID列表。
输出描述:输出当进程k终止时,所有会被终止的进程PID,并按PID升序排列,每个PID用空格分隔。
''' Author : limingx Time : June 19,2022 ''' n,k=map(int,input().split()) pid=list(map(int,input().split())) ppid=list(map(int,input().split())) output=[] outstr='' def kill(k,pid,ppid): output.append(k) for i in range(0,len(ppid)): if k==ppid[i]: kill(pid[i],pid,ppid) kill(k,pid,ppid) output.sort(key=lambda x:x,reverse=0) #reverse=0升序排列 for i in output: outstr+=' '+str(i) print(outstr.strip())Author : limingx Time : June 19,2022
-------------------更新---------------
10、奶牛今天是万圣节!农夫约翰带着奶牛去参加化装舞会,但不幸的是,他只有一套化装服。这套服装正好适合两头长度为S(1≤ s≤ 1,000,000). 农夫约翰有N头奶牛(2≤ N≤ 20000)为了方便,编号为1..N,母牛i号的长度li是(1≤ li≤ 1,000,000). 如果两头母牛的长度之和不超过服装的长度,那么它们就可以穿上服装。农夫约翰想知道有多少对两头不同的母牛能穿上这套服装。 第一行包括两个空格分隔的整数:N和S 下面N行是每头奶牛的长度Li 输出一个整数,表示FJ可以选择的成对奶牛的数量。请注意,两头母牛的顺序并不重要; 输入:
4 6
3
5
2
1 输出: 4
''' Author : limingx Time : Oct 19,2022 ''' a=input().split() list1=[] for i in range(int(a[0])): li=int(input()) list1.append(li) i=int(0) for x in range(int(a[0])): for y in range(x+1,int(a[0])): sum = int(list1[x])+int(list1[y]) if sum <= a[1]: i = i+1 print(i) 选择题
本文标签: 工程师
版权声明:本文标题:研发工程师 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1687043490a130026.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论