解:
2025-01-28 02:36:12
发布于:广东
45阅读
0回复
0点赞
不会请看
#include<bits/stdc++.h>
using namespace std;
int main() {
int N;
cin >> N;
vector<int> dp(N + 1, INT_MAX);
dp[0] = 0;
vector<int> six_powers;
for (int k = 0; ; ++k) {
int power = pow(6, k);
if (power > N) break;
six_powers.push_back(power);
}
vector<int> nine_powers;
for (int m = 0; ; ++m) {
int power = pow(9, m);
if (power > N) break;
nine_powers.push_back(power);
}
for (int i = 1; i <= N; ++i) {
dp[i] = dp[i - 1] + 1;
for (int power : six_powers) {
if (i - power >= 0) {
dp[i] = min(dp[i], dp[i - power] + 1);
}
}
for (int power : nine_powers) {
if (i - power >= 0) {
dp[i] = min(dp[i], dp[i - power] + 1);
}
}
}
cout << dp[N] << endl;
return 0;
}
这里空空如也
有帮助,赞一个