疯狂游戏2019暑期实习生在线笔试(原创)

第一题:

题目描述:
输入一个大于1的整数n
对1到n的所有数字进行编码:
①其中遇到3的倍数输出 Fizz
②其中遇到5的倍数输出 Buzz
③其中遇到3和5的倍数输出 FizzBuzz

输入样例1:5
输出样例1:
1
2
Fizz
4
Buzz
输入样例2:100
输出样例2:
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
31
32
Fizz
34
Buzz
Fizz
37
38
Fizz
Buzz
41
Fizz
43
44
FizzBuzz
46
47
Fizz
49
Buzz
Fizz
52
53
Fizz
Buzz
56
Fizz
58
59
FizzBuzz
61
62
Fizz
64
Buzz
Fizz
67
68
Fizz
Buzz
71
Fizz
73
74
FizzBuzz
76
77
Fizz
79
Buzz
Fizz
82
83
Fizz
Buzz
86
Fizz
88
89
FizzBuzz
91
92
Fizz
94
Buzz
Fizz
97
98
Fizz
Buzz
View Code

处理程序:

 1 # *** 数据输入 *** #
 2 n = int(input())
 3 # *** 数据处理 *** #
 4 for i in range(1, n+1):
 5     if i%3 == 0 and i%5 == 0:
 6         print('FizzBuzz')
 7     elif i%3 == 0:
 8         print('Fizz')
 9     elif i%5 == 0:
10         print('Buzz')
11     else:
12         print(i)

第二题:

题目描述:
输入一段字符串,对字符串中的元素进行加密处理,
①a-y所有的字母向后移动一位,例如c-d,f-g
②加密后的字母如果是元音字母(a,e,i,o,u),则转变成大写字母(A.E.I.O.U)
③如果遇到字母z,则移动到a
④遇到其他所有字符则不做变化
上面4个条件全部满足
输出加密优化后的字符串

输入样例1:
funz times*3!
输出样例1:
gvOA Ujnft*3!

处理程序:
 1 # *** 辅助函数 *** #
 2 # ord('z') == 122   chr(122+1) == '{'
 3 VOW_NAMESPACE = {'e': 'E', 'i': 'I', 'o': 'O', 'u': 'U', '{': 'A'}
 4 
 5 
 6 # *** 数据输入 *** #
 7 str_line = input()
 8 
 9 # *** 数据处理 *** #
10 str_out = ''
11 
12 for i in str_line:
13     if 97 <= ord(i) <= 122:                     # ①所有的小写字母向后移动一位ASCII码
14         str_mid = chr(ord(i) + 1)
15         if str_mid in VOW_NAMESPACE.keys():     # ②如果属于需要优化成元音大写的字符进行调整
16             str_mid = VOW_NAMESPACE[str_mid]
17         str_out += str_mid
18     else:                                       # ③其他非小写字符直接接入字符串中
19         str_out += i
20 
21 print(str_out)

第三题:

有一个只含有0,1的长方形表格(正方形也是特殊的长方形)
其中各个格子中有0、有1
找出其中最大的一个正方形,其中的所有格子全部都为1
输出这个正方形的面积(一个格子代表1个单位的面积)

输入样例1:0111,1111,1111,1111
输出样例1:9

输入样例2:10100,10111,11111,10010
输出样例2:4

输入样例3:11111,11111,11111,11111,11111
输出样例3:25

处理程序:
 1 # *** 辅助函数 *** #
 2 def graph_split(graph, y_line, x_line):  # 对原始的矩形进行切分,x_line 开头index&结尾index都包含在内
 3     [y_start, y_end] = y_line
 4     [x_start, x_end] = x_line
 5     graph_mid = graph[y_start:y_end + 1]
 6     return [gra[x_start: x_end + 1] for gra in graph_mid]
 7 
 8 
 9 def sum_graph(graph):  # 计算图谱的有效面积,统计1的个数
10     sum_now = 0
11     for i in graph:
12         sum_now += sum(i)
13     return sum_now
14 
15 # *** 数据输入 *** #
16 str_line = input().split(',')
17 graph = []
18 for i in range(len(str_line)):
19     d0_mid = []
20     for j in range(len(str_line[i])):
21         d0_mid.append(int(str_line[i][j]))
22     graph.append(d0_mid)
23 # print(graph)
24 
25 # *** 数据处理 *** #
26 X, Y = len(graph[0]), len(graph)
27 length = min(X, Y)
28 state = 1
29 
30 for i in range(length,0,-1):            # 边长由大到小变化
31     if state == 0:
32         break
33     for j in range(0, X - i + 1):       # 从左往右
34         if state == 0:
35             break
36         for k in range(0, Y - i + 1):   # 从上往下
37             y_line = [k, k+i-1]
38             x_line = [j, j+i-1]
39             graph_mid = graph_split(graph, y_line, x_line)
40             sum_out = sum_graph(graph_mid)
41 
42             if int(i*i) == int(sum_out):    # 必须要手动跳出,要不然没办法从while中跳出
43                 print(sum_out)
44                 state = 0
45                 break

猜你喜欢

转载自www.cnblogs.com/Mufasa/p/10701613.html
今日推荐