-数论-逆元- [洛谷 P4881]hby与tkw的基情

题目描述

Link

Solution

先把题目转换为人话:

给定一个数字 $n$,求:

对于求等差数列平方和等比数列的积的前 $n$ 项和我们可以用错位相减法

设 $k=\lfloor \frac{n+1}{2} \rfloor, S _ k=\sum^{\lfloor \frac{n+1}{2} \rfloor}_{i=1}(2 \times i-1) \times 26 ^ i​$。

则:$26 \times S_k=\sum^{\lfloor \frac{n+1}{2} \rfloor}_{i=1}(2 \times i-1) \times 26 ^ {i+1}​$

所以:

再用快速幂和逆元随便瞎搞搞就可以了。

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define MOD 1000000007
#define ll long long
int T;
ll n;
ll qpow(ll a, ll b, ll p) {
ll res = 1;
while (b) {
if (b & 1) res = (res * a) % p;
b >>= 1;
a = (a * a) % p;
}
return res % p;
}
int main() {
scanf("%d", &T);
while (T--) {
scanf("%lld", &n);
n = (n + 1) / 2;
printf("%lld\n", (((2 * n - 1) * qpow(26, n + 1, MOD) % MOD - 26 * (qpow(26, n, MOD) - 1) % MOD * qpow(25, MOD - 2, MOD) * 2 % MOD + 26 + MOD) % MOD) * qpow(25, MOD - 2, MOD) % MOD);
}
}
文章作者: RiverFun
文章链接: https://stevebraveman.github.io/blog/2019/06/27/89/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 RiverFun

评论