Cod sursa(job #2731266)
| Utilizator | Data | 27 martie 2021 17:05:29 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.47 kb |
#include <iostream>
#define MAX 1000002
using namespace std;
int n,dp[MAX];
int main()
{
cin >> n;
dp[1] = 0;
/// dp[i] = minim(1+dp[i-1], 1+dp[i/2] este div cu 2, 1+dp[i/3] este div cu 3)
for(int i = 2; i <= n; i++){
dp[i] = 1+dp[i-1];
if(i%2 == 0){
dp[i] = min(dp[i], 1+dp[i/2]);
}
if(i%3 == 0){
dp[i] = min(dp[i], 1+dp[i/3]);
}
}
cout << dp[n] << "\n";
return 0;
}
