noip2016演習(セクション2)

書式#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を返します。
}

公開された20元の記事 ウォンの賞賛1 ビュー6338

おすすめ

転載: blog.csdn.net/yichengchangan/article/details/54896829