Play with Floor and Ceil
大意:
求解一个方程组
思路:
扩展欧几里得,
注意 求解 floor 或者 ceil 需要 浮点型
#include<iostream>
#include<math.h>
using namespace std;
int caseT;
int X,K;
typedef long long ll;
void exgcd(ll a, ll b ,ll &x,ll &y,ll &d){
if(!b) {
x = 1; d = a; y = 0;
}else{
exgcd(b,a%b,y,x,d); y-=x*(a/b);
}
}
int main(){
scanf("%d",&caseT);
while(caseT -- ){
scanf("%d%d",&X,&K);
ll x,y,d;
ll a = floor(1.0 *X/K);
ll b = ceil(1.0 *X/K);
exgcd(a,b,x,y,d);
x *= X/d;
y *= X/d;
printf("%lld %lld\n",x,y);
}
return 0;
}