The 2022 ICPC Asia Hangzhou Regional Programming Contest

A. Modulo Ruins the Legend
sum+ns+(n+1)n/2dmodm
ns+(n+1)n/2d=gcd(n,(n+1)n/2)
p=gcd(n,n(n+1)/2)
(sum+kp+tm)modm
g=gcd(p,m)
(sum+gz)
sum+gz>=m
gz

点击查看代码
int exgcd(int a,int b,int &x,int &y){
    if(!b){
        x=1,y=0;return a;
    }
    int ans= exgcd(b,a%b,y,x);
    y=y-(a/b)*x;
    return ans;
}
int inv(int x) { return qpw(x, mod - 2); }
void solve(){
    int n,m,x,y;cin>>n>>m;
    int sum=0;
    for(int i=1;i<=n;i++)cin>>x,sum+=x;
    sum%=m;
    int s,d;int p=exgcd(n,n*(n+1)/2,s,d);
    int t,k;
    int g=exgcd(p,m,k,t);
    int z=(m-sum+g-1)/g;
    cout<<z*g+sum-m<<'\n';
    k=k*z%m;
    s=(s*k%m+m)%m,d=(d*k%m+m)%m;
    cout<<s<<" "<<d<<'\n';
}

本文作者:archer233

本文链接:https://www.cnblogs.com/archer233/p/18534019

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   archer2333  阅读(25)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起