package main import . "fmt" func main() { var n,z int Scan(&n,&z) if n>= 3 || z ==1 { Println("No") return } if n==1 { Println("Yes") return } s := map[int]bool{} for x := 1; x < z; x++ { s[x*x] = true if s[z*z-x*x] { Println("Yes") return } } Println("No") } /* 考察 なんか見たことあると思ったら フェルマーの最終定理ぽい? n >= 3は No ということ n=1とn=2のケースだけ考えればよい x,yは正整数なのでz=1のとき解なし x^1+y^1=z^1=1 x^2+y^2=z^2=1 x,yは異なっている必要はない(そのような条件はない)ので n=1の場合でz>1なら常に成立するx,yの組が存在するので常にYes 例えば(x,y)=(1,z-1)がある n=2のとき 三平方の定理ぽい見た目 まぁ全探索? x,yの組を全探索するとTLE x,yとしてありうる値1~z-1の平方を計算していく計算結果をキーにセットに追加しz^2から計算結果引いた値がキーとしてセットに存在すればYes かな */