当前位置: 首页 > news >正文

UVa1374/LA3621 Power Calculus

UVa1374/LA3621 Power Calculus

  • 题目链接
  • 题意
    • 输入格式
    • 输出格式
  • 分析
  • AC 代码

题目链接

  本题是2006年icpc亚洲区域赛日本横滨(Yokohama)赛区的F题

题意

  输入正整数 n(1≤n≤1000),问最少需要几次乘除法可以从xxx得到xnx^nxn?例如,x31x^{31}x31需要 6 次:x2=x×x,x4=x2×x2,x8=x4×x4,x16=x8×x8,x32=x16×x16,x31=x32÷xx^2 = x×x, x^4 = x^2×x^2, x^8 = x^4×x^4, x^{16} = x^8×x^8, x^{32} = x^{16}×x^{16}, x^{31} = x^{32}÷xx2=x×x,x4=x2×x2,x8=x4×x4,x16=x8×x8,x32=x16×x16,x31=x32÷x。计算过程中x的指数应当总是正整数(如 x−3=x/x4x^{-3}=x/x^4x3=x/x4是不允许的)。

输入格式

  输入包含多组数据,每组数据只有一行,为一个整数 n,输入以 0 结束。

输出格式

  对于每组测试数据,输出一行,输出一个最少需要的乘除次数。

分析

  用IDA*来做,基于贪心来构造启发函数:在当前计算出的指数序列的最大值为 x,已经计算了 s 步,最多计算 d 步的情况下,如果 x×2d−s<nx\times 2^{d-s} < nx×2ds<n,则必然无法得到 n,剪枝。

  还有如下优化策略:

  • 每次总是使用上一步得出的数进行加减操作(只需再从整个序列枚举出另外一个数)。
  • 超过 n 的数最多只需要一个。
  • 先考虑加法再考虑减法。

AC 代码

#include <iostream>
using namespace std;#define M 20
short a[M], n, ans;bool iddfs(short v = 1, short m = 1, short d = 0) {if (d == ans) return v == n;if (m << (ans-d) < n) return false;for (short i=0; i<=d; ++i) {short v1 = v + a[i];if (m<n || v1<=n) {a[d+1] = v1;if (iddfs(v1, max(m, v1), d+1)) return true;}v1 = abs(v - a[i]);if (v1>0 && (m<n || v1<=n)) {a[d+1] = v1;if (iddfs(v1, max(m, v1), d+1)) return true;}}return false;
}int main() {a[0] = 1;while (cin>>n && n) {for (ans=0; !iddfs(); ++ans);cout << ans << endl;}return 0;
}
http://www.dtcms.com/a/390579.html

相关文章:

  • 以 NoETL 重塑 AI-Ready 的数据底座,Aloudata 获评 IDC 面向生成式 AI 的数据基础设施核心厂商
  • 声音转文字API平台推荐
  • Vue3: watch watchEffect
  • 梯度提升算法及其在回归与分类中的应用实战
  • 【自然语言处理与大模型】大模型应用开发四个场景
  • 深度神经网络-传播原理
  • 交通仿真术语
  • 关于Oracle主外键约束的几个SQL语句
  • Python 操作 SQLite:Peewee ORM 与传统 sqlite3.connect 的全方位对比
  • go资深之路笔记(四)中间件(Middleware)设计模式
  • MySQL分库分表迁移:ETL平台如何实现数据合并与聚合
  • [极客大挑战 2019]BabySQL
  • SQL-索引使用
  • 数据库和数据仓库有什么区别
  • SpringBoot2.7X整合Swagger、Redission3.X的bug
  • uniapp安卓原生插件实现开启ble Server[外围模式]
  • React 18.2中使用React Router 6.4
  • 人员在岗监测技术研究:基于计算机视觉的智能监管方案
  • 实测AI Ping,一个大模型服务选型的实用工具——行业实践与深度优化策略
  • 通过QuickAPI优化金融系统API:安全快捷的数据共享最佳实践
  • 第4节 添加视频字幕到剪映(Coze扣子空间剪映小助手零基础教程)
  • 算法 --- BFS 解决 FloodFill 算法
  • telnet 一个 ip+端口却无法退出 着急
  • UVa1602/LA3224 Lattice Animals
  • Docker BuildKit 实现 Golang 编译加速
  • [x-cmd] 在 Android 的 Termux 和 iOS 的 iSH 中安装 X-CMD
  • CTFSHOW 中期测评(一)web486 - web501
  • android-USB-STM32
  • 云原生周刊:MetalBear 融资、Chaos Mesh 漏洞、Dapr 1.16 与 AI 平台新趋势
  • Android音频学习(十九)——音频HAL层简介