题解 | 仰望水面的歪

仰望水面的歪

https://www.nowcoder.com/practice/69f00fb8b2004e039097c57b43c33b90

#include <iostream>
#include <vector>
#include <string>
#include <unordered_map>
#include <algorithm>
#include <cmath>
#include <cstdint>
#include <list>
#include <map>
#include <numeric>
#include<queue>
#include<set>
#include <unordered_set>
#include <sstream>
#include<stack>

using namespace std;

int main() {
    int64_t n, h;
    cin >> n >> h;
    while (n--) {
        int64_t x, y, z;
        cin >> x >> y >> z;
		//x-i/i = -(z-h)/h,其他的同理
        // 计算经过反射后到达目标的坐标
        int64_t i = h * x;  // x坐标的反射
        int64_t j = h * y;  // y坐标的反射
        int64_t k = h * (2 * h - z);  // z坐标的反射

        // 计算最大公约数,用于化简坐标
        int64_t gcd_val = gcd(i, gcd(j, k));

        // 化简坐标
        i /= gcd_val;
        j /= gcd_val;
        k /= gcd_val;

        // 输出反射后的坐标
        cout << i << " " << j << " " << k << endl;
    }
    return 0;
}


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务