参考答案
1 # """ 2 # #经典递归解题法🐶。记住口诀:先边界,再递归;条件列完,答案出;最后稍微改常数 3 # """ 4 # def get_steps(n, m): 5 # if (n == 1 and m == 2) or (n == 2 and m == 1): 6 # return (1) 7 # elif (n <= 1 and m > 2): 8 # steps = get_steps(n, m - 1) 9 # elif (m <= 1 and n > 2): 10 # steps = get_steps(n - 1, m) 11 # else: 12 # steps = get_steps(n, m - 1) + get_steps(n - 1, m) 13 # return (steps) 14 # 15 # 16 # while True: 17 # try: 18 # n, m = map(int, input().split()) 19 # print(get_steps(n + 1, m + 1)) 20 # except: 21 # break 22 23 24 25 26 27 ####################################################### 28 # 递归思想 29 ''' 30 将方格看成坐标网格,(n,m)点的值等于(n-1,m)+(n,m-1),左边轴上的点路线方案为1 31 ''' 32 33 34 def func(n, m): 35 if n == 0 and m == 0: 36 return 0 37 if n == 0 or m == 0: 38 return 1 39 else: 40 return func(n, m - 1) + func(n - 1, m) 41 42 43 while True: 44 try: 45 a, b = map(int, input().split(' ')) 46 res = func(a, b) 47 except: 48 break 49 50 print(int(res)) 51 52 ####################################################### 53 54 nm_list = input().split(' ') 55 56 n = int(nm_list[0]) # 列数 57 m = int(nm_list[1]) # 行数 58 59 dp = [[0 for i in range(n + 1)] for j in range(m + 1)] # 考虑0的情况下创建表 60 61 dp[0][0] = 0 62 63 for i in range(n + 1): # 初始化 64 dp[0][i] = 1 # 不管多少列的0行,起点到这里只有一种走法 65 66 for j in range(m + 1): # 初始化 67 dp[j][0] = 1 # 不管多少行的0列,起点到这里只有一种走法 68 69 for j in range(1, m + 1): 70 for i in range(1, n + 1): 71 dp[j][i] = dp[j - 1][i] + dp[j][i - 1] # 第j行第i列 = 第j-1行第i列+第j行第i-1列 72 73 print(dp[m][n]) 74 75 ####################################################### 76 77 while True: 78 try: 79 x, y = map(int, input().split()) 80 81 count = 0 82 83 84 def onestep(current_x, current_y, x, y): 85 if current_x == x and current_y == y: 86 global count 87 count = count + 1 88 elif current_x < x and current_y == y: 89 onestep(current_x + 1, current_y, x, y) 90 elif current_x == x and current_y < y: 91 onestep(current_x, current_y + 1, x, y) 92 else: 93 onestep(current_x, current_y + 1, x, y) 94 onestep(current_x + 1, current_y, x, y) 95 96 97 onestep(0, 0, x, y); 98 print(count) 99 except: 100 break 101 102 ####################################################### 103 while 1: 104 try: 105 n, m = map(int, input().split()) 106 n, m = n+1, m+1 107 dp = [[0 for _ in range(m+1)] for _ in range(n+1)] 108 # print(dp) 109 dp[0][0] = 1 110 for i in range(1, n+1): 111 for j in range(1, m+1): 112 if i == 1 and j == 1: 113 dp[i][j] = 1 114 continue 115 dp[i][j] = dp[i-1][j] + dp[i][j-1] 116 117 # print(dp) 118 print(dp[n][m]) 119 except: 120 break 121 122 123 ####################################################### 124 go = [lambda x1,y1:(x1+1,y1), 125 lambda x1,y1:(x1,y1-1)] 126 127 def func(x1,y1,x2,y2): 128 global num 129 if (x1,y1) == (x2,y2): 130 num +=1 131 return 132 if x1<=x2 and y1>=y2: 133 for g in go: 134 d = g(x1,y1) 135 func(d[0],d[1],x2,y2) 136 while 1: 137 try: 138 num = 0 139 lst = [int(i) for i in input().split()] 140 func(0,0,lst[0],-lst[1]) 141 print(num) 142 except: 143 break 144 145 146 147 ####################################################### 148 149 while True: 150 try: 151 n,m=map(int,input().split()) 152 c=[[1 for i in range(m+1)] for j in range(n+1)] #初始化边界全为1 153 for i in range(1,n+1): 154 for j in range(1,m+1): 155 #大家会奇怪为啥第三个c[i][j-1]的是j-1,根据动态规划法C[I][J]=C[I-1][J]+C[I][J+1]才对啊 156 #这是因为两层for的原因,都是从1 起步。所以就相当于从右上角到左下角的向下走法,两种走法的结果一致 157 c[i][j]=c[i-1][j]+c[i][j-1] 158 print(c[n][m]) 159 except: 160 break
参考答案2
1 """ 2 用递归解决,动态规划还没学会😂 3 首先找出递归方程,可以画图理解,如图1,要想到达终点0,有两条路线,分别是A,B, 4 所以可以得到f(n,m)=f(A)+f(B)=f(n,m-1)+f(n-1,m). 5 然后需要找出出口条件,递归方程计算到最后,肯定会有f(A)=f(n,1),f(B)=f(1,m),所以要 6 找出n=1和m=1时的值,通过图2发现,m=1时f(n,1)=n+1,同理n=1时,f(1,m)=m+1 7 """ 8 9 def func(n,m): 10 if n==1: 11 return m+1 12 elif m==1: 13 return n+1 14 else: 15 return func(n-1,m)+func(n,m-1) 16 while 1: 17 try: 18 n,m=map(int,input().split()) 19 print(func(n,m)) 20 except: 21 break
参考答案
1 while True: 2 try: 3 n = int(input()) 4 s = input().split(" ") 5 candidate = {} 6 for i in s: 7 candidate[i] = 0 8 candidate['Invalid'] = 0 9 m = int(input()) 10 votes = input().split(" ") 11 for v in votes: 12 if v not in candidate: 13 candidate['Invalid'] += 1 14 else: 15 candidate[v] += 1 16 for key, value in candidate.items(): 17 print(key + " : " + str(value)) 18 except: 19 break 20 21 ##################################################### 22 while True: 23 24 try: 25 n = int(input()) 26 name_list = input().split() 27 m = int(input()) 28 vote_list = input().split() 29 30 valid_count = 0 31 for i in name_list: 32 valid_count += vote_list.count(i) 33 print(i + ' : ' + str(vote_list.count(i))) 34 print('Invalid : ' + str(m - valid_count)) 35 36 37 except: 38 break 39 #####################################################3
自己写的,待补充
参考答案
1 # import re 2 # s = input() 3 # count = len(''.join(re.findall(r'\d+', s))) 4 # 5 # s1= re.findall(r'\d+',s) 6 # s2= re.findall(r'\d',s) 7 # s3= re.findall(r'\w+',s) 8 # print(s1) 9 # print(s2) 10 # print(s3) 11 # # s2 ='*'+s1+'*' 12 # # print(s2) 13 # # print(s.split(s1)) 14 # 15 # 16 # 17 # # s = input() 18 # # 19 # # s.isalpha() 20 # # 21 # # s.isdigit() #判断是否是数字 22 23 24 #运用正则表达式 25 import re 26 while True: 27 try: 28 print(re.sub('(\d+)', '*\g<1>*', input())) 29 except: 30 break 31 ############################################################# 32 33 #在每个数字的两边加上,在最后将‘$$’消去(出现‘$$’只有两个连续数字中间),最后将‘&’替换为 '*' (用避免了1**3这类的情况) 34 while True: 35 try: 36 a = list(input()) 37 b = [] 38 for i in range(len(a)): 39 if(a[i].isdigit()): 40 b.append('$' + a[i] + '$') 41 else: 42 b.append(a[i]) 43 str_b = ''.join(b) 44 print(str_b.replace('$$','').replace('$','*')) 45 except: 46 break 47 48 ############################################################# 49 50 while True: 51 try: 52 s = input() 53 s_o = '' 54 char_pre = '' 55 for i in s: # 遍历字符串 56 if i.isdigit(): # 遇到数字,判断其前面是否非数字,是则表示数字的开始,先插入‘*’ 57 if char_pre.isdigit() != True: 58 s_o += '*' 59 else: # 非数字情况,判断其前是否为数字,是则表示数字结束,插入‘*’ 60 if char_pre.isdigit(): 61 s_o += '*' 62 s_o += i # 把当前字符带出来 63 char_pre = i # 当前字符更新到 前字符 64 if i.isdigit(): # 结束的时候,判断是否数字结束,如果是的话,插入‘*’ 65 s_o += '*' 66 print(s_o) 67 except: 68 break 69 70 71 72 """ 73 自己写的,最开始想遍历把每个数字前后都加上*,再删除**的,剩余的就应该满足条件了,但是发现给的字符串中也可能出现*, 74 所以先把原始字符串中的*替换成了一般字符串中不会有的中文,再按上述方法计算,最后再把中文替换回 * 75 """ 76 77 while True: 78 try: 79 s = input() 80 sn = '' 81 s = s.replace('*', '牛') 82 print(s) 83 for i in s: 84 if i.isdigit(): 85 sn += '*' + i + '*' 86 else: 87 sn += i 88 sn = sn.replace('**', '') 89 print(sn.replace('牛', '*')) 90 except: 91 break 92 93 94 #把该插入的位置找到保存到add_index中,然后遍历插入即可 95 while True: 96 try: 97 s = input() 98 res = list(s) 99 add_index = [] 100 for i in range(len(s)): 101 if i == 0: 102 if s[i].isdigit(): 103 add_index.append(i) 104 continue 105 elif not s[i].isdigit() and s[i-1].isdigit(): 106 add_index.append(i) 107 elif s[i].isdigit() and not s[i-1].isdigit(): 108 add_index.append(i) 109 for i in range(len(add_index)): 110 res.insert(add_index[i]+i, '*') 111 if res[-1].isdigit(): 112 res.append('*') 113 print(''.join(res)) 114 except: 115 break
参考答案
1 while True: 2 try: 3 n = int(input("")) # 输入一个正整数: 4 data = sorted(list(map(int, input().split()))) # 这里分割,表示输入的整数 5 list1 = [] 6 count = 0 7 8 for i in data: 9 if i < 0: 10 count += 1 11 elif i > 0: 12 list1.append(i) 13 14 if len(list1) == 0: #没有正整数的时候 15 eval_list1 = 0.0 16 elif len(list1) > 0: 17 eval_list1 = round(sum(list1) / len(list1),1) 18 19 print(count,eval_list1) 20 21 except: 22 break 23 ################################################################# 24 25 b = input() 26 a = input().split() 27 i = 0 28 m = 0 29 n = 0 30 for item in a: 31 if int(item) < 0: 32 i += 1 33 elif int(item) > 0: 34 m += 1 35 n = n + int(item) 36 if m == 0: 37 res = 0.0 38 else: 39 res = round(n/m,1) 40 print(i,res,end=' ') 41 42 ################################################################# 43 44 while True: 45 try: 46 n = int(input("")) # 输入一个正整数: 47 data = sorted(list(map(int, input().split()))) # 这里分割,表示输入的整数 48 # print(data) 49 50 L1 = [] 51 L2 = [] 52 count = 0 53 54 for i in data: 55 if i < 0: 56 count += 1 57 elif i > 0: 58 L2.append(i) 59 L1.append(count) 60 61 if len(L2) == 0: 62 eval_L2 = 0 63 elif len(L2) > 0: 64 eval_L2 ='%0.1f' % (sum(L2) / len(L2)) 65 L1.append(eval_L2) 66 67 #print(L1) 68 print(count,eval_L2) 69 # print(''.join(x for x in L1)) 70 71 except: 72 break 73 ################################################################# 74 75 a=int(input()) 76 b=list(map(int,input().split())) 77 num1=0 78 num2=0 79 sum=0 80 for i in b: 81 if i<0: 82 num1+=1 #负整数数量 83 elif i>0: 84 num2+=1 #正整数数量 85 sum+=i #正整数之和 86 if num2!=0: #避免分母为0的情况 87 c=round(sum/num2,1) #保留一位小数 88 print(num1,c) 89 else: 90 print(num1,'0.0') 91 92 ################################################################# 93 try: 94 n = int(input()) 95 num_list = list(map(int, input().split())) 96 a, b = [], [] 97 for i in num_list: 98 if i > 0: 99 a.append(i) 100 elif i < 0: 101 b.append(i) 102 print(len(b), round(sum(a) / len(a), 1)) 103 except: 104 break 105 106 ################################################################# 107 while True: 108 try: 109 N = int(input()) 110 n_list = input().split() 111 minus = 0 112 sum_up = [] 113 for i in n_list: 114 if int(i) < 0: 115 minus += 1 116 N -= 1 117 if int(i) == 0: 118 N -= 1 119 elif int(i) > 0: 120 sum_up.append(i) 121 avg = sum(list(map(int,sum_up)))/N 122 print("%i %.1f" % (minus, avg)) 123 except: 124 break 125 ################################################################# 126 127 while True: 128 try: 129 n = int(input()) 130 s = list(map(int, input().strip().split())) 131 c = 0 132 v = 0 133 sum = 0 134 for i in s: 135 if i<0: 136 c += 1 137 elif i>0: 138 v += 1 139 sum += i 140 print(str(c)+" "+f"{sum/v:.1f}") 141 except: 142 break
参考答案
1 n = int(input()) 2 str1 =str(n*n) 3 print(str(n)) 4 print(str1) 5 print(str1[::-1]) #翻转过来 6 str2=str1[::-1][0:len(str(n))] # 翻转过来后,取它的长度字符,就是n 7 8 print(str2) 9 10 while True: 11 try: 12 n = int(input()) 13 count = 0 14 for i in range(n+1): 15 if str(i) == str(i**2)[::-1][0:len(str(i))]: 16 count += 1 17 print(count) 18 except: 19 break 20 21 #################################################### 22 while True: 23 try: 24 n = int(input()) 25 count = 0 26 for i in range(n+1): 27 if str(i) == str(i**2)[-len(str(i)):]: 28 count += 1 29 print(count) 30 except: 31 break 32 #################################################### 33 while True: 34 35 try: 36 n = int(input()) 37 count = 0 38 for i in range(n + 1): 39 res = i ** 2 40 if str(res).endswith(str(i)): 41 count += 1 42 print(count) 43 44 45 except: 46 break 47 48 #################################################### 49 m = int(input()) 50 n = 0 51 for i in range (0,m+1): 52 item = i * i 53 if 0 <= i <= 9: 54 if (item - i) % 10 == 0: 55 n += 1 56 if 10 <= i <= 99: 57 if (item - i) % 100 == 0: 58 n += 1 59 if 100 <= i <= 999: 60 if (item - i) % 1000 == 0: 61 n += 1 62 if 1000 <= i <= 9999: 63 if (item - i) % 10000 == 0: 64 n += 1 65 #################################################### 66 67 def fun(x): 68 y = x**2 69 a = str(x) 70 b = str(y) 71 if a==b[-len(a):]: 72 # print(x) 73 return 1 74 else: 75 return 0 76 77 import math 78 n = int(input()) 79 num = 0 80 ls = [0, 1, 5, 6] 81 f = math.ceil(n/10) 82 for i in range(f): 83 for j in ls: 84 if j+10*i<=n: 85 num += fun(j+10*i) 86 else: 87 break 88 print(num)
参考答案
1 while True: 2 try: 3 n = int(input()) 4 L1 = [] 5 6 if n ==1: 7 num=2 8 9 while 1 < n <= 1000: 10 num = 2 11 num += 3 12 L1.append(num) 13 n -= 1 14 15 print(2+sum(L1)) 16 except: 17 break 18 ########################################## 19 while True: 20 try: 21 x = int(input()) 22 s = 0 23 for i in range(x): 24 s += i*3 + 2 25 print(int(s)) 26 except: 27 break 28 29 for i in range(1): 30 print(i) #结果是0 31 32 ########################################## 33 while True: 34 35 try: 36 n = int(input()) 37 result = 0 38 next_num = 2 39 for i in range(1, n + 1): 40 result += next_num 41 next_num += 3 42 print(result) 43 44 45 except: 46 break 47 ############################################## 48 while True: 49 try: 50 n = int(input()) 51 res = (2 + (3 * n - 1)) * n / 2 52 print(int(res)) 53 except: 54 break