社区讨论
AC但问
P5656【模板】二元一次不定方程 (exgcd)参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mli584zy
- 此快照首次捕获于
- 2026/02/11 22:46 上周
- 此快照最后确认于
- 2026/02/14 09:25 5 天前
第一遍提交为什么Judging那么久还编译失败,第二遍提交直接AC?两个代码一模一样啊
CPP#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define db long double
ll t,a,b,c,a1,c1,b1,qingchenduan,qcd,cnt,minx,miny,xmin,xmax,ymin,ymax,kmax;
db k1,k2;
ll x,y,d;
ll dqc;
ll read()
{
ll X=0,W=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')W=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
X=X*10+ch-'0';
ch=getchar();
}
return X*W;
}
void write(ll x)
{
if(x<0)
{
putchar('-');
x=-x;
}
if(x==0)
{
putchar('0');
return;
}
if(x>9)
{
write(x/10);
}
putchar(x%10+'0');
}
ll exgcd(ll p,ll q,ll &x,ll &y)
{
if(q==0)
{
x=1;
y=0;
return p;
}
ll ret=exgcd(q,p%q,x,y);
ll tmp=x;
x=y;
y=tmp-(p/q)*y;
return ret;
}
ll duanqingchen(ll dqcwnc,ll d)
{
if(d==0)
{
return dqcwnc>0?dqcwnc:dqcwnc+abs(dqcwnc)+1;
}
ll mod=abs(d);
ll res=(dqcwnc%mod+mod)%mod;
if (res==0)res=mod;
return res;
}
int main()
{
t=read();
while(t--)
{
a=read();
b=read();
c=read();
d=exgcd(a,b,x,y);
if(c%d!=0)
{
write(-1);
putchar('\n');
continue;
}
a1=a/d;
b1=b/d;
c1=c/d;
qingchenduan=x*c1;
qcd=y*c1;
k1=(db)(1-qingchenduan)/b1;
k2=(db)(qcd-1)/a1;
dqc=ceil(k1);
kmax=floor(k2);
if(dqc>kmax)
{
minx=duanqingchen(qingchenduan,b1);
miny=duanqingchen(qcd,-a1);
write(minx);
putchar(' ');
write(miny);
putchar('\n');
}
else
{
cnt=kmax-dqc+1;
xmin=qingchenduan+dqc*b1;
xmax=qingchenduan+kmax*b1;
ymin=qcd-kmax*a1;
ymax=qcd-dqc*a1;
write(cnt);putchar(' ');
write(xmin);putchar(' ');
write(ymin);putchar(' ');
write(xmax);putchar(' ');
write(ymax);putchar('\n');
}
}
return 0;
}
测评记录Judging
AC记录
注:不用管qingchenduan,qcd,duanqingchen,dqcwnc这些变量
回复
共 3 条回复,欢迎继续交流。
正在加载回复...