알고리즘/BaekJoon
[c++] 17626번 : Four Squares
__jhp_+
2022. 10. 4. 14:39
https://www.acmicpc.net/problem/17626
17626번: Four Squares
라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 52과 12의 합이다; 또한 42 + 32 + 1
www.acmicpc.net
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
int dp[50001] = { 0, };
int n, j, cnt = 0;
cin >> n;
dp[0] = 0;
dp[1] = 1;
for (int i = 2; i <= n; ++i)
{
dp[i] = dp[i - 1];
for (int j = 1; j * j <= i; ++j)
{
dp[i] = dp[i] < dp[i - j * j] ? dp[i] : dp[i - j * j];
}
dp[i]++;
}
cout << dp[n] << '\n';
return 0;
}