校招真题练习027 小易的字典(网易)

Posted AsenYang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了校招真题练习027 小易的字典(网易)相关的知识,希望对你有一定的参考价值。

小易的字典

题目描述
小易在学校中学习了关于字符串的理论, 于是他基于此完成了一个字典的项目。
小易的这个字典很奇特, 字典内的每个单词都包含n个‘a‘和m个‘z‘, 并且所有单词按照字典序排列。
小易现在希望你能帮他找出第k个单词是什么。

输入描述:
输入包括一行三个整数n, m, k(1 <= n, m <= 100, 1 <= k <= 109), 以空格分割。

输出描述:
输出第k个字典中的字符串,如果无解,输出-1。

 1 def Cnm(a, b):
 2     ans =1
 3     for i in range(a+1, a + b +1):
 4         ans *=i
 5     for i in range(1, b +1):
 6         ans //=i
 7     return ans
 8   
 9 n, m, k =map(int, input().strip().split())
10 if Cnm(n, m) < k:
11     print(-1)
12 else:
13     ans =""
14     while n > 0 and m > 0:
15         temp =Cnm(n -1, m)
16         if temp <k:
17             k-=temp
18             ans +="z"
19             m -=1
20         else:
21             ans +="a"
22             n -=1
23     ans +="a"*n
24     ans +="z"*m
25     print(ans)

又是数学计算类的题目,算法思路是排列组合,但是不能穷举所有排列。

参考:https://www.nowcoder.com/profile/1424034/codeBookDetail?submissionId=31703838

 

以上是关于校招真题练习027 小易的字典(网易)的主要内容,如果未能解决你的问题,请参考以下文章

[编程题] 魔法币 网易2018校招

游历魔法王国_2018网易校招

网易2017校招编程:优雅的点(PHP版本)

网易2017校招编程:优雅的点(PHP版本)

网易2017校招编程:优雅的点(PHP版本)

网易2017春招笔试真题编程题集合(10)——小易记单词