活动地址: 牛客春招刷题训练营 - 编程打卡活动
#include<stdio.h>
long long gcdh(long long a, long long b) { // 辗转相除法球最大公约数
long long t = a % b;
while (t) {
a = b;
b = t;
t = a % b;
}
return b;// 返回最大公约数
}
long long gcdh3(long long a, long long b, long long c) {
long long x = gcdh(a, b);
long long y = gcdh(b, c); //求三个数的最大公约数
long long z = gcdh(x, y);
return z;
}
int main() {
long long h, n;
scanf("%lld %lld", &n, &h);// 输入
for (long long i = 0; i < n; i++) {
long long x, y, z;
scanf("%lld %lld %lld", &x, &y, &z);
long long t = 2 * h - z;// 求照射点z方向的坐标
long long g = gcdh3(x, y, t);
x /= g, y /= g, t /= g; // 需保证 gcd(i,j,k)==1
printf("%lld %lld %lld\n", x, y, t); // 输出方向
}
return 0;
}
活动地址: 牛客春招刷题训练营 - 编程打卡活动