#bzoj2875. 随机数生成器

随机数生成器

題目描述

棟棟最近迷上了隨機算灋,而亂數是生成隨機算灋的基礎。 棟棟準備使用線性同餘法(Linear Congruential Me thod)來生成一個隨機數列,這種方法需要設定四個非負整數參數macX[0]m,a,c,X[0],按照下麵的公式生成出一系列亂數X[n]×X[n+1]=(a×X[n]+c)X[n]\times X[n+1]=(a\times X[n]+c) modmod mm其中modmod mm表示前面的數除以mm的餘數。 從這個式子可以看出,這個序列的下一個數總是由上一個數生成的。 用這種方法生成的序列具有隨機序列的性質,囙此這種方法被廣泛地使用,包括常用的C++和Pascal的產生亂數的庫函數使用的也是這種方法。 棟棟知道這樣產生的序列具有良好的隨機性,不過心急的他仍然想儘快知道X[n]X[n]是多少。 由於棟棟需要的亂數是0,1g10,1,…,g-1之間的,他需要將X[n]除以gg取餘得到他想要的數,即X[n]X[n] modmod gg,你只需要告訴棟棟他想要的數X[n]X[n] modmod gg是多少就可以了。

輸入格式

66個用空格分割的整數macX[0]nm,a,c,X[0],ngg,其中acX[0]a,c,X[0]是非負整數,mngm,n,g是正整數.

輸出格式

輸出一個數,即X[n]X[n] modmod gg.

樣例

11 8 7 1 5 3
2

樣例說明

計算得X[n]=X[5]=8X[n]=X[5]=8,故(X[n](X[n] modmod g)=(8g)=(8 modmod 3)=23)=2

數據規模與約定

對於所有數據:n1m1a0c0X[0]0g1n\ge 1,m\ge 1,a\ge 0,c\ge 0,X[0]\ge 0,g\ge 1g108g\le10^8