我的博客中有一个系列,叫做【面试题总结】,这是这个系列的第三篇博文。
这个系列会记录我曾经做过的面试题,每篇十道。随着以后我做的面试题越来越多,这个系列也会相应的持续更新下去。
第一题
题目描述
康师傅饮料公司最近推出一种新款饮料。
为了更好的促销,推出一项瓶盖换饮料,三个瓶盖可以兑换一瓶新的饮料。
如果小明买了 n 瓶饮料,计算一下它最多能喝到多少瓶。
输入描述
初始饮料数量
输出描述
总共能喝到的饮料数
示例 1
输入
9
输出
13
提示
9 个瓶盖可以换三个新饮料,三个饮料又可以换一瓶新的。
9 + 3 + 1 = 13
。
我的解答
class Solution:
def changeDrank(self, numCap):
def change(numCap):
num_gai = numCap
new_shui = num_gai // 3
rest_gai = num_gai - new_shui * 3
if (rest_gai + new_shui) >= 3:
a = change(rest_gai + new_shui)
new_shui += a
total = new_shui
return total
return numCap + change(numCap)
if __name__ == "__main__":
so = Solution()
resu = so.changeDrank(9) # 13
第二题
题目描述
小 A 的高次方程
小 A 在做数学作业时看到了这样一个题目,求方程 $ x3+y4+z^5=k $ 的一组正整数解 (x, y, z)
。
小 A 实在做不出来这道题,于是他找你帮忙写一个程序来解决这个问题。
由于你希望小 A 的作业让他自己做,你只需要判断是否存在解即可。
输入描述
第一行一个正整数 T,表示数据组数;
对于每一组数据,每行输入一个正整数 k。
1 <= T <= 200, 1 <= k <= $ 10^{12} $。
输出描述
对于每一组数据,若解存在,输出一行 YES
(不含引号),否则输出 NO
(不含引号)。
示例 1
输入
3
3
25
2
输出
YES
YES
NO
提示
第一组数据,可以找到解 x = y = z = 1
;
第二组数据,可以找到解 x = 2, y = 2, z = 1
;
第三组数据,无法找到解。
我的解答
# 此题不会,答案不对
if __name__ == "__main__":
from itertools import combinations_with_replacement as com
nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
com_resu = list(com(nums, 3))
num = int(input())
result = []
for i in range(num):
is_add = "NO"
value = int(input())
for x, y, z in com_resu:
pow_sum = pow(x, 3) + pow(y, 4) + pow(z, 5)
if pow_sum == value:
is_add = "YES"
break
result.append(is_add)
print("\n".join(result))