diff options
| author | crupest <crupest@outlook.com> | 2021-03-09 16:57:08 +0800 | 
|---|---|---|
| committer | crupest <crupest@outlook.com> | 2021-03-09 16:57:08 +0800 | 
| commit | fdff564b14ea72719852a38e9eca7d61f2cf01af (patch) | |
| tree | 9fbf77db0b21c789f3e7cb6707b193e7b48dc718 /works | |
| parent | 2768b3fc1d7e6232ff703b6ac3a05b52745a4f97 (diff) | |
| download | crupest-fdff564b14ea72719852a38e9eca7d61f2cf01af.tar.gz crupest-fdff564b14ea72719852a38e9eca7d61f2cf01af.tar.bz2 crupest-fdff564b14ea72719852a38e9eca7d61f2cf01af.zip | |
import(solutions): Add problem 1221.
Diffstat (limited to 'works')
| -rw-r--r-- | works/solutions/acwing/1221.cpp | 45 | 
1 files changed, 45 insertions, 0 deletions
| diff --git a/works/solutions/acwing/1221.cpp b/works/solutions/acwing/1221.cpp new file mode 100644 index 0000000..9ba4229 --- /dev/null +++ b/works/solutions/acwing/1221.cpp @@ -0,0 +1,45 @@ +#include <cmath>
 +#include <iostream>
 +
 +const int M = 5000010;
 +const int SM = std::sqrt(M / 2);
 +
 +int s[M];
 +
 +int main() {
 +  int n;
 +  std::cin >> n;
 +
 +  for (int i = 0; i <= SM; i++) {
 +    const int i2 = i * i;
 +    const int SMB = M - i2;
 +    for (int j = i; j * j < SMB; j++) {
 +      const int a = i2 + j * j;
 +
 +      if (s[a] == 0) {
 +        s[a] = i + 1;
 +      }
 +    }
 +  }
 +
 +  int sm = std::sqrt(n);
 +
 +  for (int a = 0; a <= sm; a++) {
 +    int as = a * a;
 +    int bsm = n - 3 * a * a;
 +    for (int b = a; b * b <= bsm; b++) {
 +      int bs = b * b + as;
 +
 +      int c = s[n - bs];
 +
 +      if (c != 0) {
 +        c = c - 1;
 +        std::cout << a << ' ' << b << ' ' << c << ' '
 +                  << std::sqrt(n - bs - c * c);
 +        return 0;
 +      }
 +    }
 +  }
 +
 +  return 0;
 +}
 | 
