0%

编程题库

Enjoy Coding

无从属知识

  • 编译程序是一种翻译程序
    • 翻译程序:将某种语言编写的程序转换成另一种语言形式的程序。如编译程序和汇编程序等。
    • 汇编程序:把汇编语言书写的程序翻译成与之等价的机器语言程序。

题库

大整数相乘

  • 有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示。不能用系统自带的大整数类型。

拼多多2018年校招内推编程题

1
2
3
4
5
6
7
while True:
try:
lst = list(input().split())
a, b = eval(lst[0]), eval(lst[1])
print(str(a * b))
except:
break

合并表记录

题目详情

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
while True:
try:
dic = {}
n = int(input())
for i in range(n):
idx, val = list(map(int, input().split()))
if idx not in dic:
dic[idx] = val
else:
dic[idx] = dic[idx] + val
dic = sorted(dic.items(), key=lambda x:x[0]) ## 按键升序排序
for key, val in dic:
print(key, val)
except:
break

计算字符个数

题目详情

1
2
3
4
5
6
7
while True:
try:
lst = [s.lower() for s in input()]
stri = input()
print(lst.count(stri))
except:
break

进制转换

题目详情

1
2
3
4
5
6
while True:
try:
n = input()
print(int(n, 16))
except:
break

句子逆序

题目详情

1
2
3
4
5
6
7
8
while True:
try:
s = input()
lst = s.split(" ")
lst = lst[::-1]
print(" ".join(lst))
except:
break

六一儿童节

  • 六一儿童节,老师带了很多好吃的巧克力到幼儿园。每块巧克力j的重量为w[j],对于每个小朋友i,当他分到的巧克力大小达到h[i] (即w[j]>=h[i]),他才会上去表演节目。老师的目标是将巧克力分发给孩子们,使得最多的小孩上台表演。可以保证每个w[i]> 0且不能将多块巧克力分给一个孩子或将一块分给多个孩子。
  • 第一行:n,表示h数组元素个数
  • 第二行:n个h数组元素
  • 第三行:m,表示w数组元素个数
  • 第四行:m个w数组元素

拼多多2018年校招内推编程题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
while True:
try:
n = int(input()) ## 小孩个数
hlst = list(map(int, input().split())) ## 小孩对应列表
m = int(input()) ## 巧克力个数
wlst = list(map(int, input().split())) ## 巧克力对应列表
hlst.sort(revesrse=True)
wlst.sort(reverse=True)
count = 0
dot = 0
for j in range(m):
for i in range(dot, n):
if wlst[j] >= hlst[i]:
count += 1
dot = i
break
if dot == n or dot == m:
break
if count > n:
print(n)
else:
print(count)
except:
break

参考

迷宫寻路

  • 假设一个探险家被困在了地底的迷宫之中,要从当前位置开始找到一条通往迷宫出口的路径。迷宫可以用一个二维矩阵组成,有的部分是墙,有的部分是路。迷宫之中有的路上还有门,每扇门都在迷宫的某个地方有与之匹配的钥匙,只有先拿到钥匙才能打开门。请设计一个算法,帮助探险家找到脱困的最短路径。如前所述,迷宫是通过一个二维矩阵表示的,每个元素的值的含义如下 0-墙,1-路,2-探险家的起始位置,3-迷宫的出口,大写字母-门,小写字母-对应大写字母所代表的门的钥匙
  • 迷宫的地图,用二维矩阵表示。第一行是表示矩阵的行数和列数M和N
  • 后面的M行是矩阵的数据,每一行对应与矩阵的一行(中间没有空格)。M和N都不超过100, 门不超过10扇。

拼多多2018年校招内推编程题

1

明明的随机数

题目详情

1
2
3
4
5
6
7
8
9
10
while True:
try:
n = int(input())
nums = []
for i in range(n):
nums.append(int(input()))
for j in sorted(set(nums)):
print(j)
except:
break

求int型正整数在内存中存储时1的个数

题目详情

1
2
3
4
5
6
while True:
try:
bin_n = bin(int(input()))
print(str(bin_n).count('1'))
except:
break

取近似值

题目详情

1
2
3
4
5
6
7
8
9
10
while True:
try:
n = float(input())
a, b = list(map(int, str(n).split(".")))
if b >= 5:
print(a+1)
else:
print(a)
except:
break

数字颠倒

题目详情

1
2
3
4
5
6
while True:
try:
n = input()[::-1]
print(n)
except:
break

提取不重复的整数

题目详情

1
2
3
4
5
6
7
8
9
while True:
try:
out = ""
for s in input()[::-1]:
if s not in out:
out += s
print(out)
except:
break

质数/素数

1
2
3
4
5
6
7
8
9
## 列出小于整数n的所有质数
## 不导入模块
n = 20
[i for i in range(2, n) if 0 not in [i%j for j in range(2, int(i**0.5) + 1)]]
# [2, 3, 5, 7, 11, 13, 17, 19]

## 使用Python的模块
[i for i in range(2, n) if 0 not in [i%j for j in range(2, int(math.sqrt(i)) + 1)]]
# [2, 3, 5, 7, 11, 13, 17, 19]

字符串反转

题目详情

1
2
3
4
5
6
while True:
try:
s = input()
print(s[::-1])
except:
break

字符串分隔

题目详情

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def decomp(string):
if string != "" and len(string) <= 8:
print(string + "0" * (8 - len(string)))
else:
print(string[:8])
string = string[8:]
decomp(string)

while True:
try:
i = 0
while i < 2:
ss = input()
decomp(ss)
i += 1
except:
break

字符串最后一个单词的长度

题目详情

1
2
3
4
5
6
while True:
try:
s = input().split()[-1]
print(len(s))
except:
break

字符的连接最长路径查找

题目详情

1
2
3
4
5
6
7
8
9
10
11
while True:
try:
n = int(input())
lst = []
for i in range(n):
lst.append(input())
lst.sort()
for i in range(n):
print(lst[i])
except:
break

最大乘积

  • 给定一个无序数组,包含正数、负数和0,要求从中找出3个数的乘积,使得乘积最大,要求时间复杂度:O(n),空间复杂度:O(1)
  • 输入共2行,第一行包括一个整数n,表示数组长度
  • 第二行为n个以空格隔开的整数,分别为A1,A2, … ,An

拼多多2018年校招内推编程题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
while True:
try:
n = int(input())
lst = list(map(int, input().split()))
lst.sort()
print(max(lst[0]*lst[1]*lst[-1], lst[-3]*lst[-2]*lst[-1]))
except:
break


while True:
try:
n = int(input())
lst = list(map(int, input().split()))
lst.sort()
if lst[0]*lst[1]*lst[-1] < lst[-1]*lst[-2]*lst[-3]:
print(lst[-1]*lst[-2]*lst[-3])
else:
print(lst[0]*lst[1]*lst[-1])
except:
break

题目详情

1

题目详情

1

参考资料

Thank you for your approval.

欢迎关注我的其它发布渠道