CSDN话题挑战赛第2期
参赛话题:面试宝典
众人拾柴火焰高,我们一起携手共筑面试宝典,可以将各语言各技术各类面试真题或者你刷过的面试题汇聚于此,金九银十之际,让我们助应聘同学一臂之力~
面试题
面试题一:
定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的5倍。当且仅当差是17的倍数时,原数也是17的倍数 。
例如,34是17的倍数,因为3-20=-17是17的倍数;201不是17的倍数,因为20-5=15不是17的倍数。输入一个正整数n,你的任务是判断它是否是17的倍数。
问题剖析:
搞清楚关系即可
原数-个位数的五倍和原数是否同时为17的倍数
注意事项:python一定要用//整除,不能用/除
问题解答:
n = int(input())
while n != 0:
if n == 0:
break
s = (n - n % 10) // 10
if (s - (n % 10) * 5) % 17 == 0 and n % 17 == 0:
print("1")
else:
print("0")
n = int(input())
面试题二:
字符串的输入输出处理。
问题剖析:
这道题最开始我没读懂题,我以为是都输入好之后,再将它分别输出,看了题解之后发现,题目的要求是让输入一段后立马就输出一段。
了解之后附上我之前理解的程序和题目正确理解的程序
问题解答:
n=int(input())
for i in range(n):
x=input()
print(x)
print()
while True:
x=input().split()
for i in x:
print(i)
print()
面试题三:
恶魔猎手尤迫安野心勃勃.他背叛了暗夜精灵,率深藏在海底的那加企图叛变:守望者在与尤迪安的交锋中遭遇了围杀.被困在一个荒芜的大岛上。为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会沉下去,到那时,刀上的所有人都会遇难:守望者的跑步速度,为17m/s, 以这样的速度是无法逃离荒岛的。庆幸的是守望者拥有闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗魔法值10点。守望者的魔法值恢复的速度为4点/s,只有处在原地休息状态时才能恢复。
现在已知守望者的魔法初值M,他所在的初始位置与岛的出口之间的距离S,岛沉没的时间T。你的任务是写一个程序帮助守望者计算如何在最短的时间内逃离荒岛,若不能逃出,则输出守望者在剩下的时间内能走的最远距离。注意:守望者跑步、闪烁或休息活动均以秒(s)为单位。且每次活动的持续时间为整数秒。距离的单位为米(m)。
问题剖析:
要算一定时间内最大移动距离si,就需要注意到递归关系:
si=max(si+17,u[m][ti%7]+120*(ti//7))
max函数中后一项是一直用闪光所能移动的最大距离,其实这个可以另用函数算
问题解答:
def m():
m,s,t=map(int,input().split())
m=m//2
sx=0
tx=0
while m>=5:
sx+=60
tx+=1
if sx>=s:
print('Yes',tx,sep='\n')
return
if tx==t:
print('No',sx,sep='\n')
return
m-=5
u=[[0,0,0,0,60,60,60],
[0,0,0,60,60,60,60],
[0,0,0,60,60,60,120],
[0,0,60,60,60,60,120],
[0,0,60,60,60,120,120]]
ti=0
si=0
while ti<t-tx:
ti+=1
si=max(si+17,u[m][ti%7]+120*(ti//7))
if si>=s-sx:
print('Yes',tx+ti,sep='\n')
return
else:
print('No',sx+si,sep='\n')
return
m()
个人经验总结
多刷题,多练练!!!!