A61579 | (魔法数字)小 H的魔法数字是 4。给定n,他希望用若干个 4进行若干次加法、减法和整除运算得到 。但由于小 H计算能力有限,计算过程中只能出现不超过 M= 10000的正整数。求至少可能用到多少个 4。例如,当 =2时,有 2=(4 + 4)/4,用到了 3个 4,是最优方案。试补全程序。 #include <iostream>
来源2021年
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
(魔法数字)小 H的魔法数字是 4。给定n,他希望用若干个 4进行若干次加法、减法和整除运算得到 。但由于小 H计算能力有限,计算过程中只能出现不超过 M= 10000的正整数。求至少可能用到多少个 4。
例如,当 =2时,有 2=(4 + 4)/4,用到了 3个 4,是最优方案。
试补全程序。
#include <iostream>
#include <cstdlib>
#include <climits>
using namespace std;
const int M = 10000;
bool Vis[M + 1];
int F[M + 1];
void update(int &x, int y) {
if (y < x)
x = y;
}
int main() {
int n;
cin >> n;
for (int i = 0; i <= M; i++)
F[i] = INT_MAX;
①
int r = 0;
while (②) {
r++;
int x = 0;
for (int i = 1; i <= M; i++)
if (③)
x = i;
Vis[x] = 1;
for (int i = 1; i <= M; i++)
if (④) {
int t = F[i] + F[x];
if (i + x <= M)
update(F[i + x], t);
if (i != x)
update(F[abs(i - x)], t);
if (i % x == 0)
update(F[i / x], t);
if (x % i == 0)
update(F[x / i], t);
}
}
cout << F[n] << endl;
return 0;
}暂无题解
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?