遇到一个题,n(n+1)(2n+1)(3n^2+3n+1)/30mod10^9+7
先求30对于10^9+7的逆元
代码:
#include <cstdio>
#include <cstring>
#include<iostream>
#include <algorithm>
using namespace std;
long long ex_gcd(long long a,long long b,long long &x,long long &y)
{
if(b == 0)
{
x = 1;
y = 0;
return a;
}
long long m = ex_gcd(b,a%b,y,x);
y -= a/b * x;
return m;
}
int main()
{
long long a,b,x,y;
cin>>a>>b; //求a 关于b的逆元
if(ex_gcd(a,b,x,y)==1)
cout<<(x%b+b)%b<<endl;
else
cout<<"None"<<endl;
return 0;
}
然后这样计算:n*(n+1)%mod*(2*n+1)%mod*(3*(n*n)%mod+3*n-1)%mod*inv_30%mod