タイトル説明
エイミーは、B氏は、次のような問題を解決するために助けてくださいB氏の問題Bを要求します。
P = 1000000007ましょう。
二つの整数a、bおよびcが与えられると、二つの整数xとyを見つけてください
(0≤x≤y<P)(0 \当量X \当量Y <P) (0 ≤ X ≤ Y < P )、その結果を
(X + Y)MOD p = B(X + Y)\ BMOD P = B (X + Y )m個の入出力のD P = B
MODのp =のC(X \回Y)(Y×X)\ BMOD P = C (X × Y )mは、O D P = C
説明を入力します。
最初の行は、テストケース(1 <= T <= 10)の数である整数tを、含んでいます。
次のT株において、各ラインは、bおよびc(0 <= bの、C <P)は、2つの整数を含みます。
出力説明:
1つのラインの各テストケースについて、ください出力X、Y。
溶液が存在する場合、X <= yのため、溶液は一意です。
解がない場合、出力を喜ば-1、-1
例1
輸出
コピー2 2 2 3 -1 -1 5 万10000 474 848 249 525 151 758 352 077 071 647 922 939 448 762 649 551 237 578 -1 -1 366 417 496 633 582 504
問題解決レポート:この質問は、* Bによると、XYを解決しようと考えるのは簡単です始めているが、まだ簡単な解決策B-4 * cは、我々は解決策があるかどうかを判断する方法がありませんので、その後、定理を考える、間違っている
平方剰余定理があるが、強度はそれにもかかわらず、弱い、唯一の解決策の有無で判断することができ、2を達成する方法はありません答回の剰余定理を解決し、最終的に次のチームがボードを理解するために参照するには缶を与えた、唯一の
成功は、その後、(X + Y)%MOD =ので、答えを得た B、X> = 0 && X <MOD Y> = 0 && Y < MODは、ので、2つのX + Y回答Aは他方はX + Y = bの(X + Y)+ MOD =あるれること; b 使用
が議論される必要があるので、平方剰余定理は、2つのソリューションが存在することになります4例の合計、分類に関する議論は、それは、x、yおよび溶液の正しさの各範囲で決定され、そこでは、我々は注目している必要
MOD =(X + Y)%に応じて回答を bが達成、および(X * Y)%MOD ==の Cの条件を使用するので、この決意していません あなたがそれを使用する必要がある場合は、それ以外の場合は、クレイジーわないであろう、と解決のためのソリューションの各セット時に
気候がプロセスよりもさらに、解決策を取らない、この時間は、もはやMODの場合であるが、これ自体で式。
ACコード:
1の#include <iostreamの> 2の#include <CStringの> 3の#include <cstdioを> 4の#include <アルゴリズム> 5の#include <cmath> 6 使って 名前空間STD。 7 typedefの長い 長いLL。 8 9 CONST LL MOD = 1E9 + 7 。 10 11 のint T。 12 LLのB、C。 13 14 のLL qpow(LLのB、LLのP LL){ 15 LL ANS = 1 。 16 一方、(B){ 17 であれば(B&1)ANS = ANS *%のP。 18 = *%のP。 19 B >> = 1 。 20 } 21の リターンANS。 22 } 23 のLL modsqr(-1,11,11- N){ 24 のLL B、K、I、X; 25 であれば(N == 2)を返す%のN、 26 であれば(qpow((N- 1)/ 2、N)== 1 ){ 27 であれば(N%4 == 3 ){ 28 、X = qpow((N + 1)/ 4、N)。 29 } 30 他{ 31 用の(B = 1 ; qpow(B、(N- 1)/ 2、N)== 1 ; B ++ )。 32 、I =(N- 1)/ 2 。 33 K = 0 。 34 一方(I%2 == 0 ){ 35 、I / = 2、K / = 2 。 36 であれば((qpow(I、N)* qpow(B、K、N)+ 1)%N == 0)は、k + =(N 1)/ 2 。 37 } 38 X = qpow((I + 1)/ 2、N)* qpow(B、K / 2、n)の%N。 39 } 40 であれば(X * 2 > N)、X = N 、X。 41 リターンX。 42 } 43 リターン - 1 。 44 } 45 46 のint main()の 47 { 48 CIN >> T。 49 一方(t-- ) 50 { 51 B >> CIN C、 52である LL TMP1 =(B * B- 。4 * + C 4%* MOD)MOD; 53である フラグで= LL modsqr(TMP1、MOD) 54で IF(B * B- 4。 * == C 0 ) 55 =フラグに0 ; 56である 場合(フラグに== - 1)// 可解性か否かを判断平方剰余 57は { 58 COUT << " -1 -1 " << ENDL; 59 続行; 60 } 61である 他は 62れます { 63 LL TMP = mod- フラグ。 64 LL Y1 =(B +フラグ)/ 2 。 65 LLのX1 =(Bフラグ)/ 2 。 66 // coutの<< X1 <<」「<< Y1 <<てendl; 67 LL Y2 =(B + TMP)/ 2 。 68 LL×2 =(B-TMP)/ 2 。 69 LL Y3 =(MOD + bの+フラグ)/ 2 。 70 LL×3 =(MOD + bのフラグ)/ 2 。 71 LL Y4 =(2 * MOD + bのフラグ)/ 2 。 72 LL×4 =(B +フラグ)/2 ; 73 74 であれば(X1 <= Y1 && X1 <MOD && X1> = 0 && Y1 <MOD && Y1> = 0 &&(×1 *のY1)%MOD ==のC) 75 { 76 COUT << X1 << " " << Y1 << ENDL。 77 } 78 そう であれば(X2 <= Y2 && X2 <MOD && X2> = 0 && Y2 <MOD && Y2> = 0 &&(×2 *のY2)%MOD ==のC) 79 { 80 COUT << X2 << " " << Y2 < < てendl; 81 } 82 、他の 場合(X3 <= Y3 && X3 <MOD && X3> = 0 && Y3 <MOD && Y3> = 0 &&(×3 *のY3)%MOD ==のC) 83 { 84 COUT << X3 << " " << Y3 << ENDL。 85 } 86 そう であれば(X4 <= Y4 && X4 <MOD && X4> = 0 && Y4 <MOD && Y4> = 0 &&(X4 *のY4)%MOD ==のC) 87 { 88 COUT << X4 << " " << Y4 << ENDL ; " -1 -1 " << てendl; 93 } 94 } 95 } 96 }