// @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
猜你喜欢
转载自blog.csdn.net/jsenht/article/details/71082974
今日推荐
周排行