fork download
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4.  
  5. // Hàm kiểm tra số nguyên dương có phải là số chính phương không
  6. bool isPerfectSquare(int x) {
  7. int s = sqrt(x);
  8. return s * s == x;
  9. }
  10.  
  11. int main() {
  12. int S;
  13. cin >> S;
  14.  
  15. // Tìm dx, dy sao cho dx^2 + dy^2 = S
  16. for (int dx = 0; dx * dx <= S; ++dx) {
  17. int dy2 = S - dx * dx; // dy^2 = S - dx^2
  18. if (dy2 >= 0 && isPerfectSquare(dy2)) {
  19. int dy = sqrt(dy2);
  20.  
  21. // Tạo tọa độ 4 đỉnh
  22. int x1 = 0, y1 = 0;
  23. int x2 = x1 + dx, y2 = y1 + dy;
  24. int x3 = x2 - dy, y3 = y2 + dx;
  25. int x4 = x1 - dy, y4 = y1 + dx;
  26.  
  27. // Kiểm tra phạm vi tọa độ
  28. if (abs(x1) <= 1e9 && abs(y1) <= 1e9 &&
  29. abs(x2) <= 1e9 && abs(y2) <= 1e9 &&
  30. abs(x3) <= 1e9 && abs(y3) <= 1e9 &&
  31. abs(x4) <= 1e9 && abs(y4) <= 1e9) {
  32. cout << x1 << " " << y1 << endl;
  33. cout << x2 << " " << y2 << endl;
  34. cout << x3 << " " << y3 << endl;
  35. cout << x4 << " " << y4 << endl;
  36. return 0;
  37. }
  38. }
  39. }
  40.  
  41. // Nếu không tìm thấy lời giải
  42. cout << "Impossible" << endl;
  43. return 0;
  44. }
  45.  
Success #stdin #stdout 0.01s 5292KB
stdin
5
stdout
0 0
1 2
-1 3
-2 1