将折射的光线以水面为对称 反转上去 刚好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")