4月3日の実習生の筆記試験の問題と解答(python)をつづります
4月3日にたくさんの筆記試験問題をしました.まずテーマを以下に述べて、読者が自分で試してみるのに便利です.以下、自分の考えを説明し、コードを貼り付けます.記憶によるものなので、題名とは異なるかもしれませんが、意味は間違いありません.4問の時間統一はすべてC/C++1秒その他の2秒です
第1題:2つのペアの差が最小です.n(nは偶数)個の数があり、それを2対にして合計し、得られたn/2個と中最大値と最小値の差はvalueであり、valueの最小値はいくらであるかを問う.入力説明:第1の行為数の個数n、第2の行為スペースで区切られたn個の数.出力説明:最小値を出力する
第二題:整数の乗算.1つの配列に0~9の10個の数字が保存されています.最大使用可能な回数です.また、2つの数AとB、A、Bが使用する0-9の数は配列の制限を超えてはいけません.A、Bの積の最小はいくらですか.説明を入力:第1の動作配列、第2の動作Aのビット数、第3の動作Bのビット数.出力摘要:最小積を出力します.(表現がはっきりしない可能性があるので説明します.配列中の数xの値がyであれば、A,Bを合わせると最大y回のxが現れる)
第三題:靴下.n本の靴下があり、各靴下には色を表す数値があり、朝起きてランダムに2本の靴下を取り出し、靴下の色の差がd以下であれば、靴下を1足作ることができることを示しています.靴下を作る確率を聞く.入力説明:第1の動作は靴下の色の配列を表し、第2の動作差d.出力説明:6ビットdouble型数を出力します.
第四題:LeetCode 72題原題.この問題にもコードがありません.
第1題:2つのペアの差が最小です.n(nは偶数)個の数があり、それを2対にして合計し、得られたn/2個と中最大値と最小値の差はvalueであり、valueの最小値はいくらであるかを問う.入力説明:第1の行為数の個数n、第2の行為スペースで区切られたn個の数.出力説明:最小値を出力する
第二題:整数の乗算.1つの配列に0~9の10個の数字が保存されています.最大使用可能な回数です.また、2つの数AとB、A、Bが使用する0-9の数は配列の制限を超えてはいけません.A、Bの積の最小はいくらですか.説明を入力:第1の動作配列、第2の動作Aのビット数、第3の動作Bのビット数.出力摘要:最小積を出力します.(表現がはっきりしない可能性があるので説明します.配列中の数xの値がyであれば、A,Bを合わせると最大y回のxが現れる)
前の3題はこの問題だけではちょっと難しいです.
第三題:靴下.n本の靴下があり、各靴下には色を表す数値があり、朝起きてランダムに2本の靴下を取り出し、靴下の色の差がd以下であれば、靴下を1足作ることができることを示しています.靴下を作る確率を聞く.入力説明:第1の動作は靴下の色の配列を表し、第2の動作差d.出力説明:6ビットdouble型数を出力します.
第1題:2つのペアの差が最小です.n(nは偶数)個の数があり、それを2対にして合計し、得られたn/2個と中最大値と最小値の差はvalueであり、valueの最小値はいくらであるかを問う.入力説明:第1の行為数の個数n、第2の行為スペースで区切られたn個の数.出力説明:最小値を出力する
第二題:整数の乗算.1つの配列に0~9の10個の数字が保存されています.最大使用可能な回数です.また、2つの数AとB、A、Bが使用する0-9の数は配列の制限を超えてはいけません.A、Bの積の最小はいくらですか.説明を入力:第1の動作配列、第2の動作Aのビット数、第3の動作Bのビット数.出力摘要:最小積を出力します.(表現がはっきりしない可能性があるので説明します.配列中の数xの値がyであれば、A,Bを合わせると最大y回のxが現れる)
第三題:靴下.n本の靴下があり、各靴下には色を表す数値があり、朝起きてランダムに2本の靴下を取り出し、靴下の色の差がd以下であれば、靴下を1足作ることができることを示しています.靴下を作る確率を聞く.入力説明:第1の動作は靴下の色の配列を表し、第2の動作差d.出力説明:6ビットdouble型数を出力します.
第四題:LeetCode 72題原題.この問題にもコードがありません.
第1題:2つのペアの差が最小です.n(nは偶数)個の数があり、それを2対にして合計し、得られたn/2個と中最大値と最小値の差はvalueであり、valueの最小値はいくらであるかを問う.入力説明:第1の行為数の個数n、第2の行為スペースで区切られたn個の数.出力説明:最小値を出力する
# -*- coding:utf8 -*-
#
# : , , 。
n = int(input())
line = input().strip().split()
arr = list(map(int, line))
arr.sort()
adds = [arr[i] + arr[-i-1] for i in range(n//2)]
print(max(adds)-min(adds))
第二題:整数の乗算.1つの配列に0~9の10個の数字が保存されています.最大使用可能な回数です.また、2つの数AとB、A、Bが使用する0-9の数は配列の制限を超えてはいけません.A、Bの積の最小はいくらですか.説明を入力:第1の動作配列、第2の動作Aのビット数、第3の動作Bのビット数.出力摘要:最小積を出力します.(表現がはっきりしない可能性があるので説明します.配列中の数xの値がyであれば、A,Bを合わせると最大y回のxが現れる)
前の3題はこの問題だけではちょっと難しいです.
# -*- coding:utf8 -*-
#
# : 。 lenA<=lenB。 0 A 。 。 A B 。
def mul(nums, na, nb):
if na <= nums[0]:
return 0 # A 0, 0
number = ''
for i in range(1, 10):
number = number + str(i)*nums[i] #
a = ''
na = na - nums[0] # 0 A na 0
b = ''
j = 0
while na > 0 and nb > 0: # A B
a = a + number[j]
j += 1
na -= 1
b = b + number[j]
j += 1
nb -= 1
b = b + number[j:j+nb] # B
a = int(a)
b = int(b)
return a * b
line1 = input().strip().split()
nums = list(map(int, line1))
na = int(input())
nb = int(input())
if na > nb:
na, nb = nb, na # na<=nb
res = mul(nums, na, nb)
print(res)
第三題:靴下.n本の靴下があり、各靴下には色を表す数値があり、朝起きてランダムに2本の靴下を取り出し、靴下の色の差がd以下であれば、靴下を1足作ることができることを示しています.靴下を作る確率を聞く.入力説明:第1の動作は靴下の色の配列を表し、第2の動作差d.出力説明:6ビットdouble型数を出力します.
# -*- coding:utf8 -*-
#
# ,
line = input().strip().split()
lens = len(line)
for i in range(lens):
num = ''
for j in line[i]:
if j.isdigit():
num += j
line[i] = int(num)
d = int(input())
s = line
# s.sort()
numbers = lens*(lens-1)/2
cnt = 0
for i in range(lens-1):
for j in range(i, lens):
if abs(s[i]-s[j]) <= d:
cnt += 1
res = cnt/numbers
print('%.6f'%res)