오! 신기하다.
피타고라스 정리까지는 알겠는데 그 다음 어떻게 할지 막혔었다.
이걸 인수분해 하면 저렇게 곱 형식으로 나타낼 수 있는데 이걸 약수라 생각하고 풀면 된다!
손코딩을 먼저 해봤다
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <functional>
#include <string>
#include <queue>
#include <stack>
#include <set>
#include <map>
#define xx first
#define yy second
#define mod 1000000009
using namespace std;
using i64 = long long;
using ii = pair<int, int>;
using ii64 = pair<i64, i64>;
int main() {
int t;
scanf("%d", &t);
for (int k = 0; k < t; k++)
{
vector <ii64> rd;
i64 n;
scanf("%lld", &n);
for (i64 i = 1; i*i <= n; i++)
{
if (n%i == 0)
{
i64 k1 = i;
i64 k2 = n/i;
if ((k1+k2)%2 != 0|| (k2-k1)%2 != 0)
continue;
rd.push_back({(k1+k2)/2, (k2-k1)/2});
}
}
if (rd.empty())
{
cout << "IMPOSSIBLE\n";
continue;
}
sort(rd.begin(), rd.end());
cout << rd[0].second << " " << rd[0].first << "\n";
}
return 0;
}
'UCPC' 카테고리의 다른 글
[20/07/05] E. 부분수열의 합 (14225) (0) | 2020.07.09 |
---|---|
[20/05/24] I 모노디지털 표현 (2287) (0) | 2020.05.30 |
[20/05/24] D 차량 번호판 2 (16969) (0) | 2020.05.30 |
[20/05/24] B 겉넓이 구하기 (16931) (0) | 2020.05.30 |
[20/05/24] J 피보나치 인버스 (10425) (0) | 2020.05.30 |