码迷,mamicode.com
首页 > 其他好文 > 详细

2875: [Noi2012]随机数生成器 - BZOJ

时间:2014-06-18 09:32:46      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:des   style   class   blog   code   http   

Description
Input

包含6个用空格分割的m,a,c,X0,n和g,其中a,c,X0是非负整数,m,n,g是正整数。

Output

输出一个数,即Xn mod g
Sample Input

11 8 7 1 5 3


Sample Output
2

 

快速幂+快速乘

 

bubuko.com,布布扣
 1 type
 2     matrix=array[1..2,1..2]of int64;
 3 var
 4     a,c,p,x0,n,g:int64;
 5     x,y:matrix;
 6  
 7 function kc(x,y:int64):int64;
 8 begin
 9     if y=0 then exit(0);
10     kc:=kc(x,y>>1);
11     kc:=(kc+kc)mod p;
12     if y and 1=1 then kc:=(kc+x)mod p;
13 end;
14  
15 operator *(a,b:matrix)c:matrix;
16 var
17     i,j,k:longint;
18 begin
19     fillchar(c,sizeof(c),0);
20     for i:=1 to 2 do
21         for j:=1 to 2 do
22             for k:=1 to 2 do
23                 c[i,k]:=(c[i,k]+kc(a[i,j],b[j,k]))mod p;
24 end;
25  
26 procedure main;
27 begin
28     read(p,a,c,x0,n,g);
29     x[1,1]:=1;x[2,2]:=1;
30     y[1,1]:=a;y[2,1]:=c;y[2,2]:=1;
31     while n>0 do
32         begin
33             if n and 1=1 then x:=x*y;
34             y:=y*y;
35             n:=n>>1;
36         end;
37     writeln((kc(x0,x[1,1])+x[2,1])mod p mod g);
38 end;
39  
40 begin
41     main;
42 end.
View Code

 

2875: [Noi2012]随机数生成器 - BZOJ,布布扣,bubuko.com

2875: [Noi2012]随机数生成器 - BZOJ

标签:des   style   class   blog   code   http   

原文地址:http://www.cnblogs.com/Randolph87/p/3789663.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!