小L的隨機數(矩陣快速冪)

2021-09-26 04:01:34 字數 1083 閱讀 8595

時間限制: 1 sec 記憶體限制: 128 mb

提交: 425 解決: 136

[提交] [狀態] [討論版] [命題人:外部匯入]

題目描述

隨機數是生成隨機演算法的基礎,小l準備使用線性同餘法(linear congruential method)來生成乙個隨機數列,這種方法需要設定四個非負整數引數m, a, c, x0按照下面的公式生成出一系列隨機數 : xn+1 = (a * xn + c) mod m ,小l現在想知道這個數列第n個數是多少,由於他只需要生成小於g的隨機數,所以你只需要告訴他xn mod g的結果即可。

輸入輸入一行6個整數,分別表示m, a, c, x0, n, g 。(n ≤ 106,1 ≤ m, a, c, x0 , g ≤231 − 1)

輸出一行乙個整數表示xn

樣例輸入 copy

233 3 3 3 3 333

樣例輸出 copy

120暴力沒寫出來,換了矩陣快速冪,一直忽略了n為1的情況

ac**:

#include#include#includeusing namespace std;

struct node;

int f=3;

long long int mod;

node a,b,c;

int m,aa,cc,g,n,x;

node mul(node a,node b)

}return ans;}

node ksm(node a,int b)

b>>=1;

a=mul(a,a);

}return res;

}int main()

// cout

// for(int i=1;i<=f;i++)

// cout

// for(int i=1;i<=f;i++)

// cout

c=mul(c,a);

// for(int i=1;i<=f;i++)

// cout

cout<}

BZOJ2875 隨機數生成器(矩陣快速冪)

棟棟最近迷上了隨機演算法,而隨機數是生成隨機演算法的基礎。棟棟準備使用線性同餘法 linear congruential method 來生成乙個隨機數列,這種方法需要設定四個非負整數引數m,a,c,x 0 按照下面的公式生成出一系列隨機數 x n 1 ax n c mo dm其中mod m表示前面...

NOI2012 隨機數生成器 矩陣快速冪

棟棟最近迷上了隨機演算法,而隨機數是生成隨機演算法的基礎。棟棟準備使用線性同餘法 linear congruential method 來生成乙個隨機數列,這種方法需要設定四個非負整數引數 m,a,c,x 0 按照下面的公式生成出一系列隨機數 x ax n c bmod m 其中 mod m 表示前...

隨機數矩陣乘法

最近有同事在討論矩陣儲存和乘法問題,一時興起就寫了演算法.要求 矩陣a 矩陣b 要求a 和 b是由隨機數組成,並且a是按行優先儲存的,而b是按列優先儲存的,並輸出a b的結果,可重複計算.考慮了一下,矩陣儲存可以用二維陣列來儲存,但是根據要求矩陣需動態儲存,所以採用指標的指標來儲存和操作矩陣.以下為...