将折射的光线以水面为对称 反转上去 刚好z的位置应该射到2*h-z

用int后面几个例子过不去 需要改成long

#include <iostream>
#include <vector>
using namespace std;

long gcd(long a, long b) {
    return b == 0 ? a : gcd(b, a % b);
}

int main() {
    long  n, h;
    cin >> n >> h;
    vector<vector<long>> vec(n, vector<long>(3));
    for (int i = 0; i < n; ++i) {
        cin >> vec[i][0] >> vec[i][1] >> vec[i][2];
    }
    for (int i = 0; i < n; ++i) {
        long a = vec[i][0], b = vec[i][1], c =  h - vec[i][2] + h;
        long k = gcd(gcd(a, b), c);
        cout << a / k << ' ' << b / k << ' ' << c / k << endl;
    }

    return 0;
}
// 64 位输出请用 printf("%lld")