書式#include <cstdioを> // 2016noip练习题、2、区间;
の#include <iostreamの>
名前空間stdを使用。
長い長いLLのtypedef。
const int型MAXN = 20000005;
整数N、K、P、A、B、C、D。
INT S [MAXN]、F [MAXN]、G [MAXN]。
int型ANS;
INTメイン()
{
freopenは( "range.in"、 "R"、標準入力)。
freopenは( "range.out"、 "W"、STDOUT)。
scanf関数( "%D%D%D%D%D%D%D"、&N&K&P、&A、&B、&C&D)。
S [1] = A。
以下のために(INT I 2 =; I <= N; I ++)
S [I] =((LL)S [I-1] * B + C)%のD。
以下のために(INT I 1 =; I <= N; I ++)
IF((I-1)%K == 0)
F [I] = S [i]は、// F数组记录区间前缀和
他
F [I] =(LL)F [I-1] * S [I]%のP; //当不是整区间时、记录前部分乘积;
G [N + 1] = 1;
用(INT I = N; I; i--)
IF(I%K == 0)
G [I] = S [I]; // G数组记录后缀和
他
G [I] =(LL)G [ I + 1] * S [I]%のP。
用(INT iは= 1; I + K-1 <= N; I ++)
((I-1)%K == 0)場合
^ = G [i]のANS。
printf( "%dの\ n"は、ANS)。
0を返します。
}