POJ 1061 青蛙的约会
2013-04-25 18:36
274 查看
题目链接:here~~
扩展欧几里得算法求同余方程,求一个最小解。自己也不懂,当成模板使用:
#include <cstdio>
long long X,Y;
void Gcd(long long A,long long B,long long &gcd)
{
if(B){Gcd(B,A%B,gcd);long long t=X;X=Y;Y=t-(A/B)*Y;}
else {gcd=A;X=1,Y=0;}
}
void GCD(long long A, long long B, long long C)//A*x=B Mod (C)
{
long long gcd;
Gcd(A,C,gcd);
if(B%gcd) printf("Impossible\n");//无解的情况
else
{
X*=B/gcd;
Y*=B/gcd;
if(X>0)X%=C;
else X=X%C+C;
printf("%lld\n",X);//第一个最小的解
}
}
int main()
{
long long x,y,m,n,B,C;
while(scanf("%lld%lld%lld%lld%lld",&x,&y,&m,&n,&C)!=EOF)
{
long long A=n-m,B=x-y;
GCD(A, B, C);
}
return 0;
}
扩展欧几里得算法求同余方程,求一个最小解。自己也不懂,当成模板使用:
#include <cstdio>
long long X,Y;
void Gcd(long long A,long long B,long long &gcd)
{
if(B){Gcd(B,A%B,gcd);long long t=X;X=Y;Y=t-(A/B)*Y;}
else {gcd=A;X=1,Y=0;}
}
void GCD(long long A, long long B, long long C)//A*x=B Mod (C)
{
long long gcd;
Gcd(A,C,gcd);
if(B%gcd) printf("Impossible\n");//无解的情况
else
{
X*=B/gcd;
Y*=B/gcd;
if(X>0)X%=C;
else X=X%C+C;
printf("%lld\n",X);//第一个最小的解
}
}
int main()
{
long long x,y,m,n,B,C;
while(scanf("%lld%lld%lld%lld%lld",&x,&y,&m,&n,&C)!=EOF)
{
long long A=n-m,B=x-y;
GCD(A, B, C);
}
return 0;
}
相关文章推荐
- POJ 1061 青蛙的约会
- POJ 1061 青蛙的约会
- POJ 1061 青蛙的约会
- POJ 1061青蛙的约会【扩展欧几里德算法】
- POJ - 1061 青蛙的约会(拓展GCD
- POJ 1061 青蛙的约会(数论一元线性同余)
- POJ 1061 青蛙的约会
- 扩展整数poj 1061 青蛙的约会 扩展欧几里得
- poj1061 青蛙的约会(扩展欧几里德)
- poj 1061 青蛙的约会
- poj 1061 青蛙的约会 扩展欧几里得算法
- POJ 1061 - 青蛙的约会(线性同余方程)
- 青蛙的约会(扩展欧几里得) POJ - 1061
- 【题解】扩展欧几里德 POJ1061 青蛙的约会
- POJ 1061 青蛙的约会(拓展欧几里得)
- poj 1061 青蛙的约会(拓展欧几里德)
- POJ 1061 青蛙的约会
- poj 1061 青蛙的约会 【扩展欧几里得】
- POJ 1061 青蛙的约会(扩展欧几里德)
- POJ 1061 青蛙的约会 extend GCD +找点