Cod sursa(job #2731266)

Utilizator divadddDavid Curca divaddd 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;
}