GYM104090A Modulo Ruins the Legend - exgcd -
题目链接:https://codeforces.com/gym/104090/problem/A
题解:
转化一下发现只需要求满足下式的解:
设
即找到一组 使得
考虑 的解
记
左右同时乘以 (由 C 的性质可知 )
得到
因此我们就得到了原式的一组解:
代码:
// by SkyRainWind
#include <bits/stdc++.h>
#define mpr make_pair
#define debug() cerr<<"Yoshino\n"
#define pii pair<int,int>
#define pb push_back
using namespace std;
typedef long long ll;
typedef long long LL;
const int inf = 1e9, INF = 0x3f3f3f3f;
int n,m;
ll exgcd(ll a,ll b,ll &x,ll &y){
if(!b){
x=1,y=0;
return a;
}
ll gd = exgcd(b,a%b,x,y);
ll t = x;x = y;y = t-a/b*y;
return gd;
}
signed main(){
ll sum=0;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
int x;scanf("%d",&x);
sum += x;
}
ll a = n, b = 1ll*n*(n+1)/2,x,y,k,t;
ll p = exgcd(a,b,x,y);
ll g = exgcd(p,m,k,t);
ll C = ((m-sum%m-1) / g+1) * g;
ll c = C / g;
printf("%lld\n%lld %lld\n",(C+sum)%m,(x*k%m*c%m+m)%m,(y*k%m*c%m+m)%m);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2022-09-16 ARC100 部分题解