Dang_Quan_10_Tin

CAU 4 30.12.2021

Dec 30th, 2021 (edited)
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.78 KB | None | 0 0
  1. #define task "CAU4"
  2.  
  3. #include <iostream>
  4. #include <cstdio>
  5. #include <cmath>
  6. #include <algorithm>
  7.  
  8. using namespace std;
  9.  
  10. constexpr int N = 1e7 + 5;
  11. int n, cnt[N];
  12. pair<int, int> res[N];
  13.  
  14. void Read()
  15. {
  16.     cin >> n;
  17. }
  18.  
  19. void Solve()
  20. {
  21.     int ans(0);
  22.  
  23.     for (int i = 0; i * i <= n; ++i)
  24.         for (int j = 0; j * j <= n - i * i; ++j)
  25.             ++cnt[i * i + j * j];
  26.  
  27.     for (int i = 0; i * i <= n; ++i)
  28.         for (int j = 0; j * j <= n - i * i; ++j)
  29.             ans += cnt[n - i * i - j * j];
  30.  
  31.     cout << ans << "\n";
  32. }
  33.  
  34. void Additional()
  35. {
  36.     // Ta lấy một cặp số (i, j) đại diện cho (i * i + j * j)
  37.     for (int i = 0; i * i <= n; ++i)
  38.         for (int j = 0; j * j <= n - i * i; ++j)
  39.             res[i * i + j * j] = {i, j};
  40.  
  41.     int a[4] = {-1, -1, -1, -1};
  42.  
  43.     // Ta có thể cho rằng i != j => i < j
  44.     for (int i = 0; i * i <= n; ++i)
  45.         for (int j = i + 1; j * j <= n - i * i; ++j)
  46.             if (cnt[n - i * i - j * j])
  47.             {
  48.                 a[0] = i;
  49.                 a[1] = j;
  50.                 a[2] = res[n - i * i - j * j].first;
  51.                 a[3] = res[n - i * i - j * j].second;
  52.  
  53.                 goto done;
  54.             }
  55. done:;
  56.     if (a[0] == -1)
  57.     {
  58.         cout << "Vo nghiem";
  59.         return;
  60.     }
  61.  
  62.     int ans(0);
  63.     do
  64.     {
  65.         for (int i = 0; i < 4; ++i)
  66.             cout << a[i] << " ";
  67.         cout << "\n";
  68.         ++ans;
  69.         if (ans == 4)
  70.             break;
  71.     } while (next_permutation(a, a + 4));
  72. }
  73.  
  74. int32_t main()
  75. {
  76.     ios::sync_with_stdio(0);
  77.     cin.tie(0);
  78.     cout.tie(0);
  79.     if (fopen(task ".INP", "r"))
  80.     {
  81.         freopen(task ".INP", "r", stdin);
  82.         freopen(task ".OUT", "w", stdout);
  83.     }
  84.  
  85.     Read();
  86.     Solve();
  87.     Additional();
  88. }
  89.  
Add Comment
Please, Sign In to add comment