码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-07-24 10:06:08      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:输入   range   输出   算法   str   blank   字典   排列   NPU   

小易的字典

题目描述
小易在学校中学习了关于字符串的理论, 于是他基于此完成了一个字典的项目。
小易的这个字典很奇特, 字典内的每个单词都包含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 小易的字典(网易)

标签:输入   range   输出   算法   str   blank   字典   排列   NPU   

原文地址:https://www.cnblogs.com/asenyang/p/11235652.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!