UVA 10673

扩展欧几里德算法

http://blog.sina.com.cn/s/blog_7064e7850100yeu1.html###

(一篇很有用的文章)

UVA 10673就能很快的算出来了

#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
typedef long long ll;
ll x, k;
void exgcd(ll a, ll b, ll &d, ll &x, ll &y)
{
    if( b == 0 ) { d = a; x = 1; y = 0; }
    else { exgcd(b, a%b, d, y, x); y -= x*(a/b); }
}
int main()
{
    int n;
    scanf("%d", &n);
    while(n--)
    {
        scanf("%lld %lld", &x, &k);
        ll a, b;
        a = floor( (double)x/k );
        b = ceil( (double)x/k );

        ll d, p, q;
        exgcd(a, b, d, p, q);
        p *= (x/d);
        q *= (x/d);
        printf("%lld %lld ", p, q);
    }

    return 0;
}

原文地址:https://www.cnblogs.com/Mr-Xu-JH/p/3862472.html