二次方程式(平方剰余定理)

タイトル説明

エイミーは、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

エントリー

コピー
10 
4 4 
5 6 
10 10 
10 25 
20000 100000000 
0 5 
3 6 
220 284 
0 1 
1000000000 1000000000

輸出

コピー
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 }

 

おすすめ

転載: www.cnblogs.com/Spring-Onion/p/11360483.html