记录编号 |
234312 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2012]同余方程 |
最终得分 |
100 |
用户昵称 |
农场主 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.002 s |
提交时间 |
2016-03-07 20:06:23 |
内存使用 |
0.29 MiB |
显示代码纯文本
#include<cstdio>
using namespace std;
typedef long long LL;
LL d=2;
void gcd(LL a,LL b,LL& d,LL& x,LL& y)
{
if (!b){d=a;x=LL(1);y=LL(0);}
else {gcd(b,a%b,d,y,x);y-=x*(a/b);}
}
LL inv(LL a,LL n)
{
LL x,y;
gcd(a,n,d,x,y);
return d==1 ? (x+n)%n : -1;
}
int main()
{
freopen("mod.in","r",stdin);
freopen("mod.out","w",stdout);
LL a,b;
scanf("%lld%lld",&a,&b);
LL ans=inv(a,b);
ans+=-1*(ans/(b/d))*(b/d);
while (ans<=0) {ans+=b/d;}
printf("%lld",ans);
return 0;
}