挿入ソート,最大公約数,素数判定,最大利益を求める問題です. 計算量を考慮しないと,時間制限に引っかかるかもしれません.
# ALDS1_1_A
# 問題文にあるものをそのまま実装する
def insertion_sort(A,N):
for i in range(len(A)):
v = A[i]
j = i-1
while j>=0 and A[j]>v:
A[j+1] = A[j]
j -= 1
A[j+1] = v
print(*A)
N = int(input())
A = list(map(int,input().split(" ")))
insertion_sort(A,N)
# ALDS1_1_B
# 互除法を使う
def solve_gcd(x,y):
x,y = max(x,y),min(x,y)
if x%y == 0:
return y
return solve_gcd(x%y,y)
x,y = list(map(int,input().split(" ")))
gcd = solve_gcd(x,y)
print(gcd)
# ALDS1_1_C
# 単純に 2から√xまでループを回して割ってみる
def is_prime(x):
if x == 1:
return False
elif x == 2:
return True
# nが√n以上の約数を持つことはないのでint(x**0.5)+1までで十分
else:
for i in range(2,int(x**0.5)+1):
if x%i == 0:
return False
return True
ite = int(input())
cnt = 0
for _ in range(ite):
n = int(input())
cnt += is_prime(n)
print(cnt)
# ALDS1_1_D
m = int(input())
# 範囲外の数値で初期化しておく float('inf')でもいい
min_value = 10**10
max_profit = -10**10
for _ in range(m):
value = int(input())
# 現在の価格 - 最安値 が今売ったときの利益
if max_profit < value - min_value:
max_profit = value - min_value
# 最安値を更新する
if min_value > value:
min_value = value
print(max_profit)