POJ2142 扩展欧几里得
2013-04-11 10:30
288 查看
/* 参考别人的代码写的 */ #include <stdio.h> #include <string.h> #include <iostream> #include <math.h> using namespace std; int ax,by; int ex_gcd(int a,int b) { if(b==0) { ax=1; by=0; return a; } int gcd=ex_gcd(b,a%b); int temp=ax; ax=by; by=temp-a/b*by; return gcd; } int main() { int a,b,c; while(scanf("%d%d%d",&a,&b,&c)!=EOF) { if(!a&&!b&&!c) break; int flag=0; if(a<b) { swap(a,b); flag=1; } int gcd,x1,x2,y1,y2; gcd=ex_gcd(a,b); ax=ax*c/gcd; by=by*c/gcd; int t=by*gcd/a; int ans=0xfffffff; //int k; for(int i=t-5;i<=t+5;i++) { x2=ax+b/gcd*i; y2=by-a/gcd*i; if(fabs((double)x2)+fabs((double)y2)<ans) { //k=i; x1=fabs((double)x2); y1=fabs((double)y2); ans=x1+y1; } } //printf("k=%d t=%d\n",k,t); if(flag) printf("%d %d\n",y1,x1); else printf("%d %d\n",x1,y1); } return 0; }
相关文章推荐
- poj 2142 扩展欧几里得解ax+by=c
- poj 2142 The Balance 扩展欧几里得
- POJ 2142:The Balance_扩展欧几里得
- poj 1061/2142 扩展的欧几里得(青蛙的约会/砝码称重)
- POJ 1061 && POJ 2142 两道扩展欧几里得简单题
- POJ 2142:The Balance_扩展欧几里得
- POJ2142_The Balance_扩展欧几里得
- poj 2142 The Balance (扩展欧几里得 数学)
- poj_2142_欧几里得扩展解延伸_理解过程紧张刺激
- poj 2142 The Balance 扩展欧几里得
- poj 2142 The Balance(扩展欧几里得)
- poj 2142 扩展欧几里得
- POJ - 2142 The Balance(扩展欧几里得求解不定方程)
- POJ 2142 扩展欧几里得
- POJ-2142-The Balance(扩展欧几里得)
- POJ 2142 扩展欧几里得
- POJ 2142 扩展欧几里得
- POJ 2142 The Balance 扩展欧几里得,求|x|+|y|最小
- poj 2142 数论 扩展欧几里得
- POJ 2142 - The Balance [ 扩展欧几里得 ]