AtCoder Beginner Contest 180 A〜C問題

前書き

AtCoder Beginner Contest 180 A〜C問題を解きました!

A問題

  • 難易度:灰
  • 時間:1分

atcoder.jp

N,A,B=map(int,input().split())
print(N-A+B)

B問題

  • 難易度:灰
  • 時間:6分

atcoder.jp

マンハッタン距離、ユークリッド距離、チェビシェフ距離を計算するだけの問題です。

import math
N=int(input())
X=list(map(int, input().split()))

m,y,c=0,0,0
for x in X:
  m+=abs(x)
  y+=abs(x)**2
  c=max(abs(x),abs(c))

print(m)
print(math.sqrt(y))
print(c)

C問題

  • 難易度:灰
  • 時間:6分

atcoder.jp

C問題としては回答時間が個人最速ですが、難易度が他大会より低かったように思えます。
入力数値は1≤N≤10**12ということでまともに解いていてはTLEです。

Nの剰余の出ない商を求めればいいです。
for文で回す実行回数は、最大でも10**12の平方根である10**6が最大として探索します。

import math
N=int(input())
n=math.ceil(math.sqrt(N))
lis = []

for i in range(1,n+1):
  if N%i==0: 
    lis.append(int(N/i))
    lis.append(i)
lis = sorted(set(lis))
for j in lis: print(j)