AtCoder Beginner Contest 161 過去問 (A~C)
参照
A問題
AとB・Cの値を入れ替えるだけの問題です。
a = list(map(int, input().split(' '))) k = a[0] a[1],a[0] = a[0],a[1] a[2],a[0] = a[0],a[2] a=list(map(str, a)) aa = ' '.join(a) print(aa)
B問題
N種類の商品人気投票に対して、
その得票数が全体の1/4Mとなる商品をM個選べるか判定する問題です。
n,m = map(int,input().split(' ')) hyou = list(map(int, input().split(' '))) A = sorted(hyou, reverse=True) Am = A[:m] for a in Am: if a>=(0.25/m)*sum(hyou): continue else: print('No') exit(0) print('Yes')
C問題
整数の差分を絶対値で置き換え続け、
最小値を割り出す問題です。
1≤N≤10**18のような大きい整数が使用されます。
N-Kの差分を置き換え続ける作業の前に、
x=|N-K|が最も0に近い値をとる地点の、
差分の挙動を監視しています。
N=10000000, K=10292 N-K = 9989708 ここでN-Kを繰り返すのは埒が明かない。 剰余の計算を加えることによって、最小値に近い差分の挙動を監視。 N <= N%K = 6468 N <= |N-K| = 3824 N <= |N-K| = 6428 N <= |N-K| = 3824 N <= |N-K| = 6428 ・・・
n,k = map(int, input().split()) shou,lis = n//k,[] if shou!=0: n=n%(shou*k) for i in range(10): n=abs(n-k) lis.append(n) print(min(lis))