bilibili编程题

it2022-05-07  1

扭蛋机

def niudan(n): s='' n=int(n) while n: if n%2==0: n=(n-2)/2 s+='3' else: n=(n-1)/2 s+='2' print(s[::-1]) return s if __name__ == '__main__': n=input() niudan(n)

计算表达式

class Solution: def calculate(self,s): """ :type s: str :rtype: int """ def precedence(op): if op == '*' or op == '/': return 2 else: return 1 def cal(op, op1, op2): if op == '*': return op1 * op2 elif op == '/': return op1 / float(op2) elif op == '+': return op1 + op2 else: return op1 - op2 opstack = [] operands = [] # remove empty space and put operands and idx = 0 for i in range(idx, len(s)): if s[i] in '+-*/': operands.append(s[idx:i]) while len(opstack) > 0 and precedence(s[i]) <= precedence(opstack[-1]) and len(operands) >= 2: op = opstack.pop() op2 = int(operands.pop()) op1 = int(operands.pop()) res = cal(op, op1, op2) operands.append(res) opstack.append(s[i]) idx = i + 1 operands.append(s[idx:]) while opstack: op = opstack.pop() op2 = int(operands.pop()) op1 = int(operands.pop()) res = cal(op, op1, op2) operands.append(res) return int(operands[0]) if __name__ == '__main__': n=input() s=Solution() while n!='END' or n!='': if n=='END' or n=='': break print(s.calculate(n)) n=input()

识别内网IP

def version(s): s=s.split(' ') s1=s[0].split('.') s2=s[1].split('.') print(s1,s2) for i in range(min(len(s1),len(s2))): if int(s1[i])==int(s2[i]): if i==min(len(s1),len(s2))-1: print('0') if s1[i+1] or s2[i+1]: continue else: if int(s1[i])>int(s2[i]): print('1') break else: print('-1') break s=input() version(s)

###顺时针打印矩阵

def printMatrix(matrix): # write code here walked = [[False] * (len(matrix[0])+1) for _ in range(len(matrix)+1)] for j in range(len(walked[-1])): walked[-1][j] = True for i in range(len(walked)): walked[i][-1] = True len_row = len(matrix) - 1 len_col = len(matrix[0]) - 1 res = [] i = 0 j = 0 direction = 0 # while not walked[i][j]: res.append(matrix[i][j]) walked[i][j] = True if direction == 0: # right if j < len_col and not walked[i][j+1]: j += 1 else: direction = 1 i += 1 elif direction == 1: # down if i < len_row and not walked[i+1][j]: i += 1 else: direction = 2 j -= 1 elif direction == 2: # left if j > 0 and not walked[i][j-1]: j -= 1 else: direction = 3 i -= 1 elif direction == 3: # up if i > 0 and not walked[i-1][j]: i -= 1 else: direction = 0 j += 1 return res n=input() n=input()#获取第二行 m=[] while n!='-1 -1': n=n.split(' ') m.append(n) n=input() s='' for i in printMatrix(m): s+=i s+=',' print(s[:-1])

是否存在和为k的两个数

def find(numbers,key): # record = [] dirc = {} for i in range(len(numbers)): #用哈希表换来O(n^2)的时间复杂度 if key-numbers[i] in dirc: dirc[key-numbers[i]] += [i] else: dirc[key-numbers[i]] = [i] for i in range(len(numbers)-1): for j in range(i+1,len(numbers)): if numbers[i] + numbers[j] in dirc: if i not in dirc[numbers[i] + numbers[j]] and j not in dirc[numbers[i] + numbers[j]]: return True num = input().split(",") numbers = [int(i) for i in num[0].split()] key = int(num[-1]) print(find(numbers, key))

最新回复(0)