# 入力
N, M, X, T, D = map(int, input().split())
# もし聞かれてるのが成長期の年齢だった場合…
if M < X:
# 今の身長 - (成長期終わりの年齢 - 聞かれてる年齢) * 成長期に毎年伸びる身長
print(T - (X - M) * D)
# もし聞かれてる年齢が成長期終わってた場合…
else:
print(T)
from math import atan2, radians, sin, cos
# 入力
a, b, d = map(int, input().split())
# x軸からの角度+回したい角度=移動させた後の角度
rad = atan2(b, a) + radians(d)
# 原点からの距離計算
r = (a * a + b * b) ** (1 / 2)
X = cos(rad) * r
Y = sin(rad) * r
print(X,Y)
from math import radians, sin, cos
# 入力
a, b, d = map(int, input().split())
cosd = cos(radians(d))
sind = sin(radians(d))
X = cosd * a - sind * b
Y = sind * a + cosd * b
print(X, Y)
from math import radians, e
a, b, d = map(int, input().split())
c = complex(a, b)
d = radians(d)
ans = c * e ** (1j * d)
print(ans.real, ans.imag)
from itertools import groupby
S = input()
T = input()
def rle(a):
grouped = groupby(a)
res = []
for k, v in grouped:
res.append((k, int(len(list(v)))))
return res
s_L = rle(S)
t_L = rle(T)
# 要素の数が違ったらOUT!!!
if len(s_L) != len(t_L):
print('No')
exit()
ans = 'Yes'
# zipで纏めて1つずつ出してあげて
for s, t in zip(s_L, t_L):
# 文字種、文字サイズをそれぞれ確認!
s_char, s_cnt = s
t_char, t_cnt = t
# 文字種が違う!どうして…
if s_char != t_char:
ans = 'No'
# Sの方が多い!どうして…
if s_cnt > t_cnt:
ans = 'No'
# Sに足したい!けど足せない!どうして…
if s_cnt == 1 and t_cnt != 1:
ans = 'No'
print(ans)
from collections import deque
# 入力
N = int(input())
sx, sy, tx, ty = map(int, input().split())
start_s = set() # スタート地点が円周上に乗ってる円の集合
goal_s = set() # ゴール地点が円周上に乗ってる円の集合
circle_L = [] # 円情報保管庫
for i in range(N):
x, y, r = map(int, input().split())
circle_L.append([x, y, r])
# スタート地点がこの円の円周上に存在するか判定
if r * r == (x - sx) * (x - sx) + (y - sy) * (y - sy):
start_s.add(i)
# ゴール地点がこの円の円周上に存在するか判定
if r * r == (x - tx) * (x - tx) + (y - ty) * (y - ty):
goal_s.add(i)
# \円の交わり判定機〜/(CV:NOBUYO)
def cross_check(a, b):
# aの方が大きい円にしたい
if a[2] < b[2]:
a, b = b, a
xa, ya, ra = a
xb, yb, rb = b
# xの差とyの差で
x = xa - xb
y = ya - yb
# 三平方の定理的に…ただし、ルート取っちゃうと小数で誤差出ちゃいそうなので…後で2乗するので勘弁して下さい…
length = x * x + y * y
# 円周が重なってるか判定!
if (ra - rb) ** 2 <= length <= (ra + rb) ** 2:
return True
else:
return False
# 円と円が接してるならedge張ってBFS!
edge_L = [[] for i in range(N)]
# 辺張るパート
for a in range(N - 1):
for b in range(a + 1, N):
if cross_check(circle_L[a], circle_L[b]):
edge_L[a].append(b)
edge_L[b].append(a)
# BFS!BFS!
que = deque(start_s)
checked_s = set(start_s)
while que:
now = que.popleft()
for next_node in edge_L[now]:
if next_node not in checked_s:
checked_s.add(next_node)
que.append(next_node)
# 到達できましたー?
if len(goal_s & checked_s) == 0:
print('No')
else:
print('Yes')
from collections import defaultdict
# 入力
N = int(input())
L = [[] for i in range(N)]
# 其々の素因数の「最大」の指数を管理するためのdict
max_lcm_d = defaultdict(int)
# 其々の素因数と指数が「唯一」かを管理するためのdict
cnt_d = defaultdict(int)
# まだ入力…
for i in range(N):
m = int(input())
for j in range(m):
p, e = map(int, input().split())
# 指数最大値を更新
max_lcm_d[p] = max(max_lcm_d[p], e)
# 辞書のキーにタプルで突っ込んじゃって、カウント
cnt_d[(p, e)] += 1
# 整数a毎に、素因数と指数のペアで管理
L[i].append((p, e))
ans = 0
max_cnt = 0
# 整数を1にした時…
for prime_L in L:
# その整数に含まれる素因数と指数を1つずつ見ていくよ!
for k, v in prime_L:
# 唯一、かつ、最大のものがあれば、この整数を1にした時LCMが変化する!
if max_lcm_d[k] == v and cnt_d[(k, v)] == 1:
ans += 1
break
# 1つも変化する要素が無い場合、LCMは「1にする操作を行わない」時と変わらないので、その状態をキープ
else:
max_cnt |= 1
# その状態になってるなら取り得る値の個数に+1されて出力!
print(ans + max_cnt)