大鹏

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

 

 

 

 参考答案

  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
View Code

参考答案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
View Code

 

 

 

 

 参考答案

 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
View Code

自己写的,待补充

 

 参考答案

  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
View Code

 

 参考答案

  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
View Code

 

 

 

 参考答案

 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)
View Code

 

 参考答案

 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
View Code

 

posted on 2022-04-06 22:01  pf42280  阅读(28)  评论(0编辑  收藏  举报