题意:
给定x, k,求p, q使得:
思路:
http://blog.youkuaiyun.com/fioman/article/details/2455698
利用扩展的欧几里得定理,ax + by = gcd(a, b);x, y一定有整数解。
AC代码
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cstdlib>
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;
void gcd(int a,int b,int& d,int& x,int& y) {
if(!b) {
d = a, x = 1, y = 0;
}else {
gcd(b, a%b, d, y, x);
y -= x*(a/b);
}
}
int main() {
int T, a, b, d, p, q, x, k;
scanf("%d", &T);
while(T--) {
scanf("%d%d",&x,&k);
a = (int)floor((double)x / k);
b = (int)ceil((double)x / k);
gcd(a,b,d,p,q);
p *= (x / d);
q *= (x / d);
printf("%d %d\n",p,q);
}
return 0;
}
本文介绍了一种使用扩展欧几里得定理解决特定数学问题的方法,即给定x和k,求解使得ax + by = gcd(a, b)成立的p和q。通过提供AC代码,详细解释了实现过程。
1556

被折叠的 条评论
为什么被折叠?



