题目链接:https://beta.atcoder.jp/contests/abc099/tasks/abc099_c
题意:
给你 1 6 9
通过这三个数的次幂进行求和得到输入的N,要求越少越好。
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
typedef long long ll;
int dp[maxn];
int main()
{
for(int i=0;i<maxn;i++){
dp[i]=1e9;
}
dp[0]=0;
for(ll i=0;i<=maxn;i++){
dp[i+1]=min(dp[i+1],dp[i]+1);
for(ll j=6;i+j<=maxn;j*=6){
dp[i+j]=min(dp[i+j],dp[i]+1);
}
for(ll j=9;i+j<=maxn;j*=9){
dp[i+j]=min(dp[i+j],dp[i]+1);
}
}
int n;
cin>>n;
cout<<dp[n]<<endl;
return 0;
}