#P5011. 水の造题

    ID: 5691 远端评测题 1000ms 32MiB 尝试: 0 已通过: 0 显示难度提高 上传者: 标签>素数判断,质数,筛法期望逆元

水の造题

背景

第一分钟,CYJian 说:“要有样子。”于是便有了 kk 种动作。

第二分钟,CYJian 说:“要有活力。”于是便有了 kk 种动作组成的总动作数为 NN 的搏击操。

第三分钟,CYJian 说:“要有数学。”于是便有了一套搏击操的威力。

第四分钟,CYJian 说:“数字要小。”于是便有了一个伟大的模数 1949100119491001。

第五分钟,CYJian 说:“要有规律。”于是便有了一套搏击操威力的计算方法。

第六分钟,CYJian 说:“要有限制。”于是便有了时空限制以及数据范围。

第七分钟,CYJian 说:“要有答案。”于是便有了这道题让你做掉。

……

第 ∗* 分钟,巨佬 Imagine 说:“数据太水。”于是蒟蒻出题人疯了。(详见数据范围)

题目描述

现在有一套由 kk 种动作组成的动作总数为 NN 的搏击操。

已知第 1,2,⋯ ,k1, 2, \cdots, k 个动作的威力为 a[1⋯k]a[1\cdots k]。

且如果第一个动作后紧接着第二个动作,则威力会额外加上 a[1]+a[2]a[1]+a[2]。

如果第二个动作后紧接着第三个动作,则威力会额外加上 a[2]+a[3]a[2]+a[3]。

……

如果第 kk 个动作后紧接着第一个动作,则威力会额外加上 a[k]+a[1]a[k]+a[1]。

请求出最后动作的期望威力。

当然,还是要用伟大的模数 1949100119491001 来膜一膜的。

输入格式

第一行,一个正整数 NN。

第二行,一个正整数 kk。

第三行,kk 个正整数 a[1⋯k]a[1\cdots k]。

输出格式

一行,一个正整数表示期望的威力模 1949100119491001 的值。

2
6
1 2 3 4 5 6

16242509

提示

样例解释

x−yx-y 表示第一个动作为 xx,第二个动作为 yy。

  • 1−11-1:1+1=21+1=2;
  • 1−21-2:1+2+(1+2)=61+2+(1+2)=6;
  • 1−31-3:1+3=41+3=4;
  • 1−41-4:1+4=51+4=5;
  • 1−51-5:1+5=61+5=6;
  • 1−61-6:1+6=71+6=7;
  • 2−12-1:2+1=32+1=3;
  • 2−22-2:2+2=42+2=4;
  • 2−32-3:2+3+(2+3)=102+3+(2+3)=10;
  • 2−42-4:2+4=62+4=6;
  • 2−52-5:2+5=72+5=7;
  • 2−62-6:2+6=82+6=8;
  • 3−13-1:3+1=43+1=4;
  • 3−23-2:3+2=53+2=5;
  • 3−33-3:3+3=63+3=6;
  • 3−43-4:3+4+(3+4)=143+4+(3+4)=14;
  • 3−53-5:3+5=83+5=8;
  • 3−63-6:3+6=93+6=9;
  • 4−14-1:4+1=54+1=5;
  • 4−24-2:4+2=64+2=6;
  • 4−34-3:4+3=74+3=7;
  • 4−44-4:4+4=84+4=8;
  • 4−54-5:4+5+(4+5)=184+5+(4+5)=18;
  • 4−64-6:4+6=104+6=10;
  • 5−15-1:5+1=65+1=6;
  • 5−25-2:5+2=75+2=7;
  • 5−35-3:5+3=85+3=8;
  • 5−45-4:5+4=95+4=9;
  • 5−55-5:5+5=105+5=10;
  • 5−65-6:5+6+(5+6)=225+6+(5+6)=22;
  • 6−16-1:6+1+(6+1)=146+1+(6+1)=14;
  • 6−26-2:6+2=86+2=8;
  • 6−36-3:6+3=96+3=9;
  • 6−46-4:6+4=106+4=10;
  • 6−56-5:6+5=116+5=11;
  • 6−66-6:6+6=126+6=12。

$2+6+4+5+6+7+3+4+10+6+7+8+4+5+6+14+8+9+5+6+7+8+18+10+6+7+8+9+10+22+14+8+9+10+11+12=294$。

294/36=49/6294/36=49/6。

1/6≡16242501(mod19491001)1/6 \equiv 16242501 \pmod{19491001}。

ans=49×16242501 mod 19491001=16242509ans = 49 \times 16242501 \bmod 19491001 = 16242509。

  • Subtask 1(20 pts):1≤N≤101 \leq N \leq 10,1≤k≤71 \leq k \leq 7;
  • Subtask 2(20 pts):1≤N≤1061 \leq N \leq 10^6,1≤k≤71 \leq k \leq 7;
  • Subtask 3(20 pts):1≤N≤10400001 \leq N \leq 10^{40000},1≤k≤71 \leq k \leq 7;
  • Subtask 4(20 pts):1≤N≤101061 \leq N \leq 10^{10^6},1≤k≤71 \leq k \leq 7;
  • Subtask 5(20 pts):1≤N≤101061 \leq N \leq 10^{10^6},1≤k≤1061 \leq k \leq 10^6。

保证所有的数据:1≤a[i]≤1071 \leq a[i] \leq 10^7。

注意:本题捆绑测试。

小提示:

可以用下面的 inv(x)\texttt{inv(}x\texttt{)} 求出 xx 的逆元:

long long mod = 19491001;

long long quick_pow(long long x, int k) {
    long long res = 1;
    while(k) {
        if(k & 1) res = res * x % mod;
        x = x * x % mod;
        k >>= 1;
    }
    return res;
}

long long inv(long long x) {
    return quick_pow(x, mod - 2);
}