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

计算小杨击败怪物

这个问题需要计算小杨击败怪物所需的最少攻击次数。怪物血量为 h,小杨可以使用物理攻击(第 i 次造成 2^{i-1} 点伤害)和至多一次魔法攻击(选择一个不超过当前血量的质数 x 造成伤害)。目标是使怪物血量恰好为 0

方法思路

  1. 问题分析:物理攻击的伤害是2的幂次序列(1, 2, 4, ...),连续使用 k 次物理攻击的总伤害是 2^k - 1。魔法攻击只能使用一次,伤害为质数 x
  2. 关键观察
    • 如果只使用物理攻击,则 h 必须等于 2^k - 1,攻击次数为 k
    • 如果使用魔法攻击和物理攻击,总伤害为 x + (2^k - 1) = h,即 x = h - (2^k - 1) 必须为质数且 x ≥ 2,攻击次数为 k + 1
  3. 算法选择:枚举可能的物理攻击次数 k(从0到上限,如20),检查上述条件,取最小攻击次数。若没有可行方案,返回 -1
  4. 质数判断:使用试除法检查 x 是否为质数,优化到检查到 √x

解决代码

#include <iostream>
#include <climits>
using namespace std;bool is_prime(int n) {if (n < 2) return false;if (n == 2) return true;if (n % 2 == 0) return false;for (int i = 3; i * i <= n; i += 2) {if (n % i == 0) return false;}return true;
}int main() {int t;cin >> t;while (t--) {int h;cin >> h;int min_attacks = INT_MAX;for (int k = 0; k <= 20; k++) {long long power = (1LL << k) - 1;if (power > h) break;if (power == h) {if (k < min_attacks) {min_attacks = k;}} else {int x = h - power;if (x >= 2 && is_prime(x)) {if (k + 1 < min_attacks) {min_attacks = k + 1;}}}}if (min_attacks == INT_MAX) {cout << -1 << endl;} else {cout << min_attacks << endl;}}return 0;
}

代码解释

  1. 质数判断函数 is_prime:检查输入整数 n 是否为质数。首先处理小于2、等于2和偶数的情况,然后检查奇数因子到 √n
  2. 主函数
    • 读取测试用例数 t
    • 对每个测试用例:
      • 初始化 min_attacks 为极大值。
      • 枚举物理攻击次数 k,计算 2^k - 1
      • 如果 2^k - 1 == h,更新 min_attacksk
      • 否则计算 x = h - (2^k - 1),若 x 是质数且 ≥2,更新 min_attacksk + 1
    • 输出结果:如果找到可行方案,输出最小攻击次数;否则输出 -1

该方法通过枚举和质数检查,高效地找到了最优解,适用于给定的约束条件。

http://www.jsqmd.com/news/299049/

相关文章:

  • 支付宝消费券回收(方法、流程、折扣)全指南
  • 如何检查本地 / 远程端口是否打开 ?
  • 网络威胁情报:构建你自己的情报源——DIY情报系统如何阻止零日攻击
  • Itasca PFC6.0 HCA空心扭剪试验 很久没有发布新品了 最近很忙 以后会抽空陆续上新
  • Java程序员如何一周速通Redis?
  • Java分布式系统开发与实践!
  • Java程序员请注意:Redis进阶骚操作都在这里了!
  • 基于狼群优化算法的LSSVM回归预测GWO-LSSVM 为了提高最小二乘支持向量机(lssvm...
  • 探寻2026四川电梯广告优选:口碑与实力并存,电梯广告/电梯视频广告/户外LED广告/高铁广告,电梯广告品牌推荐榜单
  • 2025年气动旋转接头实力榜:国内哪些厂家最靠谱?气电滑环/集电环/电滑环/气动旋转接头,气动旋转接头供应厂家推荐
  • 吐血推荐!本科生AI论文工具TOP9:开题报告全攻略
  • centos安装依赖包 路线手机
  • 转行简历怎么写?简历制作网站模板直达,HR认可更易过
  • 电商GIF主图制作教程?高效 GIF 压缩工具免费攻略
  • 学长亲荐8个一键生成论文工具,研究生轻松搞定论文写作!
  • C#上位机模板程序,使用的是台达AS228主机PLC,功能齐全,自动运行页面、切换页面、手动调...
  • 三菱FX1N与3台东元Teco N310变频器通讯实战之旅
  • YOLO26改进 - 卷积Conv | SPD-Conv空间深度转换卷积优化空间信息编码,攻克小目标检测难题
  • 在线 GIF 生成如何保画质?高效 GIF 制作工具实操指南
  • 自媒体配图GIF大小 怎么弄?高效动图裁剪工具实操教程
  • 日常证件照怎么压缩?符合办事提交要求的 3 个方法
  • Device (PCI0)节点的_HID=PNP0A03说明Device (PCI0)的子节点Device (P2P0)的子节点Device (S1F0)是PCI设备--非常重要
  • 灵活就业简历制作难?项目导向模板下载,HR一眼认可
  • 职场晋升简历怎么制作?专属模板下载+HR认可技巧
  • [python]-循环语句
  • 2026臭氧发生器市场,口碑厂家引领潮流,三维混合机/带式干燥机/大型臭氧发生器/小型臭氧发生器,臭氧发生器企业排行
  • 18.Stack——queue(上) - 详解
  • 2026年目前质量好的手拉式气动葫芦工厂口碑推荐榜单,6吨气动葫芦/固定式气动葫芦,手拉式气动葫芦生产厂家怎么选
  • 在IEEE-14总线系统中执行连续功率流 测试环境:MATLAB 读取IEEE14和 IEEE...
  • 《把脉行业与技术趋势》-102-直流电与交流电的比较:它们不是“优劣之分”,而是物理规律在不同约束下的最优解。如同河流的“直流”奔涌与“交流”潮汐,各循其道,各尽其用。