CSES 1071 - Number Spiral

題目

Problem#

有個無限大的格子,最左上角開始的數字是 $1$,上圖展示了它的前五層數字,可以發現是螺旋往外的

題目問給你 row $y$ 和 column $x$ 要你回傳那格的數字

測資限制#

  • $1 \le t \le 10^5$
  • $1 \le y, x \le 10^9$

想法#

看起來似乎沒辦法直接寫出一行公式,直接帶入 $y$ 和 $x$ 就可以得到答案,可以試著分情況討論

  1. 當 $y < x$ 時:
    • 如果 $x$ 是奇數時,第一格都是 $x^2$,要求 $(y,x)$ 的話 $x^2$ 往下就用減 $y$ 的就好
    • 如果 $x$ 是偶數,可以發現剛好左邊一格是 $(x-1)^2$ ,所以要求 $(y,x)$ 的話,則可以用 $(x-1)^2$ 往右往下加 $y$ 得到
  2. 當 $y > x$ 的規律和 $y > x$ 的一樣,只是差別在 $x$ 和 $y$ 互換了
  3. 當 $y = x$ 時,可由 $x^2 - x + 1$ 得出(或是 $y^2 - y + 1$ 畢竟 $x=y$)
  • 時間複雜度: $\mathcal{O}(1)$
  • 空間複雜度: $\mathcal{O}(1)$

AC Code#

心得#

看了別人的劇透才寫出來嗚嗚