日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

poj 2891 Strange Way to Express Integers 2012-09-05

發布時間:2025/7/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 poj 2891 Strange Way to Express Integers 2012-09-05 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://poj.org/problem?id=2891?

?

解線性模方程組。

比較坑爹,數據比較大,很容易溢出。

?

1 Program poj2891; 2 3 var m:int64; 4 5 a,r:array[1..30000000]of int64; 6 7 ans,x,y,lcm:int64; 8 9 10 Procedure init; 11 12 var i,j:longint; 13 14 begin 15 16 m:=0; 17 18 readln(m); 19 20 for i:=1 to m do 21 22 readln(a[i],r[i]); 23 24 end; 25 26 27 Function extended_gcd(a,b:int64;var x,y:int64):int64; 28 29 var k:int64; 30 31 begin 32 33 if b=0 then begin 34 35 extended_gcd:=a; 36 37 x:=1;y:=0; 38 39 end 40 41 else begin 42 43 extended_gcd:=extended_gcd(b,a mod b,x,y); 44 45 k:=x;x:=y;y:=k-(a div b)*y; 46 47 end; 48 49 end; 50 51 52 Procedure print(ans:int64); 53 54 begin 55 56 writeln(ans); 57 58 end; 59 60 61 Procedure main; 62 63 var i:longint; 64 65 d,ai,ri,k:int64; 66 67 begin 68 69 ans:=0; 70 71 ai:=a[1];ri:=r[1]; 72 73 for i:=2 to m do 74 75 begin 76 77 d:=extended_gcd(ai,a[i],x,y); 78 79 lcm:=a[i]*ai div d; 80 81 if (r[i]-ri)mod d<>0 then begin print(-1);exit;end; 82 83 k:=((x mod a[i])*(r[i]-ri) mod a[i])div d; //這個取余很重要,沒有的話就會溢出,在這wa了好久 84 85 ri:=((ri+ai*k) mod lcm+lcm)mod lcm; 86 87 ai:=lcm; 88 89 end; 90 91 print(ri); 92 93 end; 94 95 96 Begin 97 98 assign(input,'input.in');reset(input); 99 100 assign(output,'output.out');rewrite(output); 101 102 while not(eof) do 103 104 begin 105 106 init; 107 108 if m<>0 then main; 109 110 end; 111 112 close(Input);close(Output); 113 114 end.

?

轉載于:https://www.cnblogs.com/yesphet/p/5236495.html

總結

以上是生活随笔為你收集整理的poj 2891 Strange Way to Express Integers 2012-09-05的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。