即将毕业了,感觉要被互联网卷飞了,今天开始刷刷笔试面试题。欧里给!水平有限,仅供参考!
先刷两道360笔试编程题。
1、有一种特殊的DNA,仅仅由核酸A和T组成,长度为n,顺次连接
科学家有一种新的手段,可以改变这种DNA。每一次,科学家可以交换该DNA上两个核酸的位置,也可以将某个特定位置的核酸修改为另一种核酸。
现在有一个DNA,科学家希望将其改造成另一种DNA,希望你计算最少的操作次数。
输入:输入包含两行,第一行为初始的DNA,第二行为目标DNA,保证长度相同。
输出:输出最少的操作次数
如输入:ATTTAA TTAATT 输出:3
# -*- coding=utf-8 -*-
# @Time : 2022/5/26 15:07
# @File:test_DNA_A_T.py
# @Sofware:PyCharm
## 360笔试题
stringt,stringg=input('初始的DNA 目标DNA(空格隔开):').split()
leng=len(stringt)
t=0;g=0;
for i in range(leng):
if (stringt[i] != stringg[i]) & (stringg[i] == 'A'):
t = t + 1
elif (stringt[i] != stringg[i]) & (stringg[i] == 'T'):
g = g + 1
print("最少操作次数:%dn",max(t,g));
2、A和B两个人在抽奖。现在有一个抽奖箱,里面有n张中奖票,m张不中奖票。A和B轮流从中抽一张奖票出来。如果有人抽到中奖票就结束,抽到中奖票的人胜利。抽过的奖票会被丢弃。
额外的,B每次抽后,会再次抽取一张票并丢弃掉(这张票中奖不算B胜利)。
现在,A先抽,请问A的胜率,保留4位小数后输出。
如果两人到最后也没有抽到中奖票算作B胜利。
输入:输入两个数字n,m,代表中奖票和不中奖票的数量 (0≤n,m≤1000)
输出:输出A的胜率,保留4位小数。
样例输入:2 3
样例输出:0.6000
# -*- coding=utf-8 -*-
# @Time : 2022/5/26 15:36
# @File:test_choujiang.py
# @Sofware:PyCharm
def dfs(nw,nb):
ans = 0;
ans += 1.0 * nw / (nw + nb);
if (nw == 0):
return 0.0;
if (nb == 0):
return 1.0;
if (nb == 2):
ans += 1.0 * nb / (nw + nb) * (nb - 1) / (nw + nb - 1) * dfs(nw - 1, nb - 2);
elif (nb >= 3):
ans += 1.0 * nb / (nw + nb) * (nb - 1) / (nw + nb - 1) *(1.0 * nw / (nw + nb - 2) * dfs(nw - 1, nb - 2) + 1.0 * (nb - 2) / (nw + nb - 2) * dfs(nw, nb - 3));
return ans;
if __name__=='__main__':
n, m = map(int,input('请输入n和m,用空格隔开:').split())
print("%.4fn", dfs(n, m));


