문제출처 : https://www.acmicpc.net/problem/12934
수학문제는 정렬이나 구현문제보다는 쉬운것 같다.
code
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
long long x, y, sum = 0, big, a = 0, cnt = 0;
bool ispossible = 1;
cin >> x >> y;
sum = x + y;
(x >= y) ? big = x : big = y;
for (int i = 0; i <= big; i++)
{
if ((sum * 2) - i == pow(i, 2))
{
a = i;
ispossible = 1;
break;
}
else if ((sum * 2) - i < pow(i, 2))
{
ispossible = 0;
break;
}
else
ispossible = 0;
}
if (ispossible)
{
for (int i = a; i >= 1; i--)
{
if (x >= i)
{
x -= i;
cnt++;
}
}
cout << cnt;
}
else
cout << -1;
return 0;
}