考えて競プロする

プログラミングコンテストの問題をどう考えて解いたかを記録していくブログです。使用言語はPython3

ABC077-B - Around Square を解く(1)

ABC077-B - Around Square

 

N以下の平方数(整数を2乗した数)を求める問題

1, 4, 9, 16 … と順番に列挙していって

Nを追い越した時にその1つ前の数を答える方法でいこうと思う

 

以上を踏まえて書いたコードを以下に示す

 

提出したコード

# 入力
N=int(input())

a=1
while True:
  b=a*a
  
  if N==b:
    print(b)
    break
  
  elif N<b:
    print((a-1)*(a-1))
    break

 

提出結果はTLEでした

間に合わないのかー

 

1 <= N <= 10^9 なので

2乗した数が 10^9 を超える場合は 31623 のときらしい

 

つまり最大でループは 31623 回になるわけだけど

その程度の回数でも間に合わないのか…

思っていたよりも計算量が大きいみたいだ

 

ABC077-B - Around Square を解く(2) へ続く