<untitled> (C++)
Ревизии: current
#include <iostream>
#include <vector>
using namespace std;
vector<int> dp(5001);
int main()
{
// freopen("uj.in","r",stdin);
// freopen("uj.out","w",stdout);
for (int i = 1; i <= 5000; i++)
dp[i] = i;
for (int i = 2; i <= 5000; i++)
for (int j = 2; j * j <= i; j++)
if (i % j == 0 && dp[j] + 2 + dp[i / j] < dp[i])
dp[i] = dp[j] + 2 + dp[i / j];
for (int i = 2; i <= 5000; i++)
for (int j = 1; i - j > 0; j++)
if (dp[j] + dp[i - j] + 2 < dp[i])
dp[i] = dp[j] + dp[i - j] + 2;
int e = 0;
while (cin >> e && e != 0)
cout << dp[e] << endl;
return 0;
}
Комментарии:
Нет