Advertisement
wojiaocbj

BC

Jun 11th, 2022
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.51 KB | None | 0 0
  1. #include <stdio.h>
  2. typedef long long LL;
  3. #define MIN(x,y) (((x)<(y))?(x):(y))
  4. int c1,c2,c3;
  5. LL ans[114514] = {0};
  6. LL dfs(int k){
  7.     if(ans[k]){
  8.         return ans[k];
  9.     }
  10.     else{
  11.         LL m = dfs(k - 1) + c1,m2;
  12.         if(k % 2 == 0){
  13.             m2 = dfs(k / 2) + c2;
  14.             m = MIN(m,m2);
  15.         }
  16.         if(k % 3 == 0){
  17.             m2 = dfs(k / 3) + c3;
  18.             m = MIN(m,m2);
  19.         }
  20.         ans[k] = m;
  21.         return m;
  22.     }
  23. }
  24. int main(){
  25.     int n;
  26.     scanf("%d%d%d",&c1,&c2,&c3);
  27.     ans[1] = c1;
  28.     while(~scanf("%d",&n)){
  29.         printf("%lld\n",dfs(n));
  30.     }
  31.     return 0;
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement