// @Author Jsen
// @Version V1.0.0
// @Date 2017/05/02
// ZOJ Problem Set - 3903
// Ant
// http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3903
// 学习取模,逆元
// 学习 typedef 学习 long long
// a1^2 + a2^2 + .... + an^2 = n(n+1)(2n+1)/6
// a1^3 + a2^3 + .... + an^3 = (n(n+1))^2/4
// 取模逆元(参考费马小定理):作用:将除法转为乘法(同余)
// a/b%p b*c%p === 1 则c为b的逆元,有 a/b%p === a*c%p
// 结论公式
// (13 * n^4 + 26 * n^3 + 17 * n^2 + 4 * n) / 12
#include <stdio.h>
typedef long long LL;
#define MOD 1000000007ll
// 12 的 MOD 逆元
#define NI 83333334ll
int main() {
int CASE;
scanf("%d", &CASE);
LL A, B;
for(int i = 0; i<CASE; i++) {
scanf("%lld", &A);
A %= MOD;B = (A*A) % MOD;
printf(
"%lld\n",
(
(13 * (B * B % MOD) % MOD) +
(26 * (B * A % MOD) % MOD) +
(17 * B % MOD) +
(4 * A % MOD)
) % MOD * NI % MOD
);
}
return 0;
}
ACM:ZOJ Problem Set - 3903
最新推荐文章于 2020-06-05 14:18:51 发布