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

CF552C Vanya and Scales

题目描述

Vanya 有一个天平,以及若干砝码,每个砝码的重量分别为 \(w^0, w^1, w^2, \dots, w^{100}\) 克,其中 \(w \ge 2\) 且每种重量的砝码只有一个。现在他想称量一个质量为 (m) 的物品,砝码可以放在天平的任意一个托盘上。问是否能够通过适当的放置使得天平平衡?

形式化地说,是否存在一种方案,将物品和一些砝码放在左盘,另一些砝码放在右盘,使得左右盘总质量相等?

输入格式

一行两个整数 \(w\)\(m\)\((2 \le w \le 10^9\)\(1 \le m \le 10^9\))。

输出格式

如果可以称量,输出 "YES",否则输出 "NO"


解题思路

本题的关键在于砝码的重量是 \(w\) 的幂次,且每个幂次只有一个砝码。这种结构提示我们可以将问题转化为 \(w\)进制表示 的变形。

假设我们将物品放在左盘,那么平衡条件为:

\[m + \sum_{i \in L} w^i = \sum_{j \in R} w^j \]

其中 (L) 是放在左盘的砝码集合,(R) 是放在右盘的砝码集合。移项得:

\[m = \sum_{j \in R} w^j - \sum_{i \in L} w^i \]

因此,我们需要将 (m) 表示为 (w) 的幂次的带符号和,每个幂次最多出现一次,且系数只能是 (-1)、(0) 或 (1)(系数为 (1) 表示放在右盘,(-1) 表示放在左盘,(0) 表示不使用)。

这就相当于在 (w) 进制下,每个数位上的数字允许是 (-1,0,1),而普通的 (w) 进制数字范围是 (0) 到 (w-1)。我们能否通过进位/借位的方式将 (m) 转换成这种“平衡三进制”的形式呢?

算法步骤

我们可以从最低位开始处理 \(m\),每次考察当前最低位 \(m \bmod w\)

  • 如果 \(m \bmod w = 0\):说明这一位是 \(0\),可以直接除以 \(w\)去掉这一位。
  • 如果 \((m - 1) \bmod w = 0\):说明我们可以通过减去一个 \(1\)(相当于在左盘放一个该幂次的砝码)使得这一位变成 \(0\),然后去掉这一位(即令 \(m = (m - 1) / w\))。
  • 如果 \((m + 1) \bmod w = 0\):说明我们可以通过加上一个 \(1\)(相当于在右盘放一个该幂次的砝码)使得这一位变成 \(0\),然后去掉这一位(即令 \(m = (m + 1) / w\))。
  • 如果以上条件都不满足,则无法用允许的系数表示这一位,输出 "NO"

重复这个过程直到 \(m\) 变为 \(0\)。如果成功处理完所有位,则输出 "YES"

时间复杂度

每次循环 \(m\) 至少除以 \(w\),因此循环次数为 \(O(\log_w m)\),在 \(w \ge 2\) 时最多约\(O(\log m)\),非常快。


代码实现

#include <bits/stdc++.h>
using ll = long long;
using namespace std;
const int N = 2e5 + 10, mod = 998244353, inf = LLONG_MAX;
ll n, w, m;
void solve() {cin >> w >> m;while (m) {if ((m - 1) % w == 0) { // 相当于加在m对面m--;} else if ((m + 1) % w == 0) { // 相当于加在mm++;} else if (m % w == 0) { // 这一位为0,什么都不放;} else {cout << "NO" << '\n';return;}m /= w; // 去掉已处理的最低位}cout << "YES" << '\n';
}
int main() {ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int _ = 1;// cin >> _;while (_--) {solve();}return 0;
}
http://www.jsqmd.com/news/424423/

相关文章:

  • LCTF2018 PWN easy_heap
  • 2026分析新疆匠之初装饰设计,这家专业的酒店设计企业哪家好 - 工业推荐榜
  • 山东一卡通变现攻略 - 团团收购物卡回收
  • 2026宁波婚纱摄影综合评分榜单|满分100分,备婚新人选店权威指南 - charlieruizvin
  • 2026年评价高的小区道闸/车辆道闸工厂直供哪家专业 - 行业平台推荐
  • 2026年比较好的远程可视监控智能门锁/房门智能门锁厂家选择指南 - 行业平台推荐
  • 2026年质量好的生涯规划教育解决方案/生涯规划教室建设学校设施推荐 - 行业平台推荐
  • 2026年质量好的分段伸缩门/无轨伸缩门可靠供应商推荐 - 行业平台推荐
  • 2026年靠谱的矿用防爆柴油机搬运车/矿用防爆柴油机车稳定供应商推荐 - 行业平台推荐
  • 第 03 篇|函数与装饰器:`def` 不只是换了关键字
  • 2026年高端日常佩戴珠宝品牌一览,时尚又百搭,东方秩序/东方高端珠宝/高端珠宝,高端日常佩戴珠宝设计哪个好 - 品牌推荐师
  • AtCoder DP Educational Contest
  • 2026年热门的电动护理床/多功能护理床工厂直供哪家专业 - 行业平台推荐
  • 2026宁波高端婚纱摄影综合实力排名榜 _ 官方权威发布 - charlieruizvin
  • ①python基础课-解决未知输入行数的A + B 问题
  • 2026年口碑好的渗碳多用炉/密封箱式多用炉长期合作厂家推荐 - 行业平台推荐
  • 2026年深圳差示扫描量热仪好用的品牌盘点,哪家值得买 - 工业设备
  • 2026年热门的TikTok海外短视频培训,河北鱼本咨询性价比高 - myqiye
  • 2026年上海口碑好的婚恋机构盘点,专业婚恋机构哪家比较靠谱 - myqiye
  • 点读笔公司选购要点,好用的品牌大概多少钱 - 工业品牌热点
  • 2026年文旅标识牌文化元素植入,价格实惠又靠谱的品牌有哪些 - 工业推荐榜
  • 2026年国内老牌品牌检测企业哪家好,科检检测全国服务 - mypinpai
  • KBSGZY矿用隔爆型移动变电站价格多少,贵州地区行情如何? - 工业品网
  • 抚州上饶地区新能源汽车学校推荐,江西万通职业学院靠谱吗? - 工业品网
  • 热重分析仪根据预算选购,有什么好的建议? - 工业设备
  • 2026年重庆口碑好的房产服务公司推荐,深度解析知房置业靠谱吗 - 工业品牌热点
  • 湖北开放大学全省四级体系办学,对考建造师有帮助吗? - 工业推荐榜
  • 2026年比较好的滑冰场/滑冰场管道厂家口碑推荐汇总 - 行业平台推荐
  • 直接上结论:专科生必备的降AI神器 —— 千笔AI
  • 2026年口碑好的实验室反应釜来图定制企业,上海釜鼎有优势 - 工业推荐榜