HDOJ-2669 Romantic(数论)

来源:互联网 发布:网络心理学的杂志 编辑:程序博客网 时间:2024/06/05 04:06

裸的扩展欧几里得算法,但要注意题目中要求a为非负数,扩展欧几里得算出来的a可能是负的,需要对a,b进行一下调整,否则会WA。

#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;typedef long long LL;LL Ex_gcd(LL a, LL b, LL &x, LL &y){LL d;if (a == 0 && b == 0) return -1;// 无GCDif (b == 0){x = 1;y = 0;return a;}d = Ex_gcd(b, a%b, y, x);y -= a / b * x;return d;}int main(){LL a, b, x, y;while (~scanf("%I64d%I64d", &a, &b)){if (Ex_gcd(a, b, x, y) != 1)printf("sorry\n");else{//注意解出来的x可能是负数,需要调整一下while (x<0){x += b;y -= a;}printf("%I64d %I64d\n", x, y);}}return 0;}


0 0