问题 4811 --密码

4811: 密码

题目描述

  Alice 和 Bob 想要进行加密通信,于是他们自己设计了一套加密算法进行身份验证。你知道这个加密算法并不可靠,并截获了 Alice 和 Bob 之间的信息。现在你想要恢复出 Alice 的密钥。

Alice 和 Bob 约定了一个大质数 $p$,一个随机范围值 $err$ 和一个在 $0 \sim p-1$ 之间均匀随机生成的整数密钥 $x$。其中 $p$ 和 $err$ 的值是公开的,而 $x$ 的值只有 Alice 和 Bob 知道。

当 Bob 想要确认 Alice 的身份时,Bob 会生成 $m$ 个在 $0\sim p-1$之间均匀随机生成的 $a_i$ 并发给 Alice。对于每个 $a_i$ ,Alice 会返回给Bob $a_i x$ 模 $p$ 的值。为了防止窃听,Alice 会给结果加上一个在 $-\lceil \frac {err}2 \rceil$ 到 $\lceil \frac {err}2 \rceil$ 之间均匀随机生成的扰动。

即,Alice 会返回给 Bob mm 组形如 $a_i x + b_i \equiv c_i \pmod p$ 的等式,其中 $b_i$ 为一个不公开的在 $-\lceil \frac {err}2 \rceil$ 到 $\lceil \frac {err}2 \rceil$ 之间均匀随机生成的数,$a_i$  为随机生成的数,$a_i,p,err,c_i$ 为公开的数。

你获得了 Alice 返回的这 $m$ 组等式(即 $m$ 个 $a_i$  和 $c_i$),你需要求出 $x$ 的值。

输入

第一行输入一个整数 $T$,表示数据组数。
对于每组数据,第一行输入三个整数 $m,p,err$。接下来 $m$ 行,每行两个整数 $a_i,c_i$ 。符号的含义和题面中相同。

输出

输出 $T$ 行,
对于每组测试数据,输出一个 $0$ 到 $p-1$ 之间整数表示答案。数据保证有解并且解唯一。

样例输入输出

输入#1 复制
5
50 965317940449696003 1000000
916250268576131127 65099625173171309
757920308813014659 20764338319219043
730370295694376862 450125464874565481
142390129568613044 716792851938314157
103649862300996120 263581496586556919
364078639991061947 313773176081501159
719449043183470615 683531554116204159
266561429387469027 928037365783420074
922145843214332574 505241994863504807
957729809027271713 368806301700206841
243538323262474390 705418794932672222
59421442868418612 368863071597221441
838734406871686495 791028409755701715
373078913607113508 877341519857578991
326579895237688273 102230508662476945
858035483412408510 302807033421582779
157592418849443734 44673078953298645
815587010437636938 5834914427962374
796712719580909303 22369191803997012
399854367727472820 941695041856695999
65949264326031277 324905976213168100
293268561774704662 869874163614742652
730822719102549754 169326196154630699
191090009623888693 37712325495149051
762687180487185710 499849999980101380
386941403893381363 190294081955630483
257297300319340193 721308481980605741
241314415926227489 589240163880578782
351831819172225741 332859122402425525
166172008456234845 461651684934726098
309791522810710999 696482821215335733
185995720642615958 148923500813496335
699116420089280721 401403088528232983
491760665521259915 721611510364680128
286867348503509890 64073013137649342
455752185714090742 76411481310122378
298778821410776286 804622261676434509
446521266894272705 659644764900854833
701484011577433988 774871655337962470
286288309516502731 762617719857651130
886905206899343972 888293053855202505
76841611599271784 849987776344612164
426753396756156422 571743207911894862
868166140100835700 928906241461726066
91025063577818460 174002039080808936
656634047441369380 806340214828840603
405508853334934152 200759307116385126
893612596256399644 537007659089416651
274461963639971980 112305706015498516
623778272145871622 819814657524879046
50 990086603427971123 100000000
638627826283158153 530695124158762024
195728714832261594 555848209101205529
595897182490621915 639383171025857208
492367990395453078 603409082915882640
854398315074421779 238344294489723490
843372332378591335 16907767911564426
376556321324247821 827684724394422417
160204259225105586 77438796416354576
555174240154123988 737354559840792962
317513083792560353 802697698830587037
528398145667646972 961024096732226067
416031476823970862 461094980195995981
650969432075185146 492438630272994954
145620605416671993 857307233991413576
903796771877209140 219554636130964242
732327394539833270 422433154888133315
179324620715992841 533168119822230585
798232999621995018 370100943627639591
936956867695125818 300925156475756393
211117792688397044 663858994479762865
641619179969851243 799984928986797313
509094095579917123 124522143798998723
50706566291316294 695328690476852691
536412121040634024 128538247202484897
187535102733810692 206802361270136633
473864332270527626 73076886190592088
45802948871349763 697343309420996994
453115773049776835 39038945841055594
856628649371580557 418090567341970065
830302889150456899 900554451665021772
437503895948454798 915012971872018857
986224617624615634 434599973172518630
265539158798230308 595584378953667741
966972313785728064 288663184163446540
203680921554986793 434718061947409382
115752428562737198 239716774146169969
236106965925797505 751125402833970382
728032481034362514 366317957648818133
864814878737774488 543639088447255970
761603579211619164 248398381962057494
811180387617922624 418354166225909064
697610857417596878 500780227705772085
49114639973475846 491791976876195899
265833189990460557 778941207882716195
223442416853821825 356870250221137643
990073246214695800 169705020281118377
173002823847544398 810261628632737058
669194551532022929 280736043316306611
289754222729503160 820471989639971107
290243395849985668 220184234386959627
50 980024554710327989 10000000000
363651099112091059 583337510421564773
402287980377995772 73340946416386651
71947612501690445 858177668393247083
526949276862620739 911098618586543816
445243439688032833 845786812761350671
979489872111803669 574072865785750974
719292112106834475 70859514598055905
212769651814161879 312475480407112308
545499888525581020 466795320311458532
645031089801859742 193394675577409084
431283854891407216 683321721860713807
270638267548337972 743854678607182763
365066854179957900 664019533931962820
646598848814300237 867968428504653066
652871279865250291 93232803969034889
944258168418084470 973946535739069218
427916884902731700 739281054917291722
938983680764517517 949018710748385586
600068137920635236 270573442004237478
648309787546891342 144351214468855694
881327344740432066 556713735358671732
106625695436663759 263188372727442950
744607521816647781 780653257419852787
928517453552321374 420527303773807593
305220635929804755 673785187798430985
341671797080152081 217142201750569571
616520508633010580 472361163153487822
766180644937413925 768240415803723953
636466273382809025 820890812675226716
969385406068526785 802849256178829804
214266430338882131 168624765441472297
456209457635421127 832293176728496418
197919765729477806 811755320847544459
648298293663334517 521121276938911016
835851788373216835 720692218202069082
967301855557543502 199093115184017442
725356343904595404 680276459043952251
221793512577119702 715885959587189017
424189632544835310 507751104289093841
199856438291557533 3750183558890567
779633926621424349 77699171240266853
390300434379932541 440377064126176359
648407657342223317 695222307300447637
107908447813598524 298361078273614528
555881470682689325 740362826968684618
494297264827938734 165163387283933182
316178113445320478 805499578739738320
724689891851744001 865389067299869838
566266224357620343 885687674979002087
853540335641607817 952893251223024326
50 901703747826466099 1000000000000
793647003164966502 619857965527263516
274719975393519423 262865503950282104
705606023298790189 517353708663160137
547767627148798171 760651759495609193
799292494851646776 421306898912223038
290399825263013236 253873415985671932
124527495917117485 410947842548482925
112522056309496803 827383558791677821
239579697878104766 868562894541752939
336285557082095326 318334800340246473
127980354679982025 806637611734285778
59831213156859705 481450703574762226
263094841507366294 583015827405409831
211448735839385151 650874569453277348
455384968017462522 860483431911509256
716985290533066058 126763410253143015
510585160431029005 438982670592207256
433996344228439619 417339769137502225
65203949517548447 174303756589310277
779615632482574697 371778693313826326
537699020190716718 738528070667613283
175820803022152083 556368074360742152
894728842256988553 477695665016868730
787231943463999738 510040337321191227
384526281917790613 233590866402530409
100339611576541408 224844705696081980
797793087036397643 460658490729156089
824791725865918403 505098141376834186
644799127041967852 280816127454037465
844500109153863646 747935673135619709
541197241612410138 589025319013243133
814763183106620065 195124901133080516
55212411255604443 160732591609296769
753494532384949208 323682031103450744
145818042135778399 569833080826551826
172615756828968795 417680617134450755
391366037854143892 381275757431358812
46331406491684730 795811638052955059
340746490879310593 617486878173540261
327567624891320904 199821326552049761
867755077692127321 488572565122079754
795382845413236460 249091555630118973
400577138441554240 408707064551992449
542490386750235657 641548627262497121
52276723592594896 295073376000221648
417453981791159843 201570566104765674
61304189049191362 39326520799307418
268562649565585621 575541056304324858
31305410484617694 258548015239640678
52711123427659328 390039984622370671
50 942283206001759093 100000000000000
826107554283804383 892105512587798772
574155371287366440 940443703130611412
427142979158786291 73984657130899488
542570661027050182 305715147471768722
690887960514343843 441690219405991898
383981406923790113 720072802739873738
486576069390075344 743703782309031846
236971848405830346 19446521155197908
234596905689211060 618975367910977724
809724680160256666 428793702288748748
905504649291663775 604060582374852649
824689906263819799 466244779590133260
673049929682663719 172489819365909100
313586375561335996 605014782439893037
801943544530857594 318802924386887839
940346214525867560 656174590070478405
819368993527279697 467432168477126984
290110132097993822 437415658692615905
856237268802855140 63787111054868942
62932758713744194 728575922665139047
779663886289693709 381785327801088828
495973603127835509 637780039206040594
632224279595648713 204483081240143508
461795152477561057 25211992727348014
141224720661490794 591889782137803878
78512295397700789 780866849607581566
321627874904026805 919847280439593678
414043231027551334 658491173399997865
324406651737623133 169010069355462890
852962147006262787 580148849254404067
66574916020344193 180070661699243225
603180121661412149 438969784254701694
573888825597671150 418981948379665942
82822819049167422 223178369566117961
550263295702982807 585450138638379380
843109175493541607 242045115407215879
202340301944835620 384281743006074881
224497560120903266 640169642110054361
103800911420926695 661447255970049858
799054677121071607 791213682684694260
552210333516141339 377070624626402643
850541533542372459 668551605715535491
867270799013772546 290872490027121405
689723265072152467 523805457305322145
706216288953755192 811389952810097487
343053125963882577 497363467028633045
191838711877373825 110419140426060575
361057290133635825 706896230851850045
174816030624318054 571369774217099878
624924368796768760 282436545999926390
输出#1 复制
174160990874241983
15068600210305667
414642422460163811
801461751128396845
146193162482884420

提示

说明/提示
对于前 $10\%$ 的数据,满足 $err \le 10^6 $。
对于前 $20\%$ 的数据,满足 $err \le 10^8 $。
对于前 $30\%$ 的数据,满足 $err \le 10^{11} $。
对于前 $40\%$ 的数据,满足 $err \le 10^{12} $。
对于另外 $20\%$ 的数据,满足 $p \le 10^{16},m = 2000$。
对于 $100\%$ 的数据,满足 $10^{15} \le p \le 10^{18},50 \le m \le 2000,1 \le err \le 0.01p,1 \le T \le 5,0 \le a_i,c_i \le p-1$,保证 $p$ 为素数。

序号 标题 作者 发表时间 费用 订购数 操作