D - 整数を探します
の$ A ^ {N} + B ^ {N} = C ^ {N} $
考えると、n個の$ B、C $を解きます
せいぜい3倍整数解
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 typedefの長い 長いLL。 LL [ 500005 ]。 LLのN、; INT のmain() { int型のT。 scanf関数(" %のD "、&T)。 一方、(T-- ) { scanf関数(" %のLLDの%のLLD "、&N、&A )。 もし(N> = 3 ) { プット(" -1 -1 " )。 } そう であれば(N ==1 ) { COUT << 1 << ' ' << + 1 << ' の\ n ' ; } そう であれば(N == 0 ) { COUT << - 1 << ' ' << - 1 << ' の\ n ' ; } 他 { LLのB、C、X、Y。 用 LL I =(1 ; iが<。 ) { X =(* A)/ I。 Y = I。 // COUT <<(X + Y)<<」「<< << ENDL。 もし((X + Y)%2 == 0 &&(X + Y)=(!2 * A))破ります。 } } C =(X + Y)/ 2 。 B = SQRT(C *とのCA * A)。 coutの << B << ' ' << C << ' \ nを' ; } } }