2018南京区域赛——G - Pyramid(打表,取模求逆元)

Gym - 101981G
首先用坐标打表找出规律,发现表达式应该是一个四次方程
根据打表结果解出方程系数
最后注意取模求逆元
关于取模求逆元:https://www.cnblogs.com/shawn-ji/p/5674772.html

下面上代码(包括打表)

#include 
using namespace std;
#define les 0.0000001
#define mod 1000000007
struct node {
    double x,y;
}p[100005];
int cnt;
inline double dis(int a,int b) {
    return (p[a].x-p[b].x)*(p[a].x-p[b].x)+(p[a].y-p[b].y)*(p[a].y-p[b].y);
}
bool same(int a,int b,int c) {
    if(abs(dis(a,b)-dis(b,c))>1;
    }
    return ans%mod;
}
long long ivt(){ return fpow(24,mod-2);}
int main() {
    int t; scanf("%d",&t);
    while(t--) {
        scanf("%lld",&n);
        long long ans=(fpow(n,4)+fpow(n,3)*6+fpow(n,2)*11+n%mod*6)%mod;
        //ans/=24;
        //ans*ivt()%mod;
        ans=ans*41666667%mod;
        printf("%lld\n",ans);
    }
}

你可能感兴趣的:(2018南京区域赛——G - Pyramid(打表,取模求逆元))