CF1951D.Buying Jewels
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Nightwish feat. Jonsu - Erämaan Viimeinen
ඞ
Alice 有 n 枚硬币,想在 Bob 的珠宝店购物。今天,虽然 Bob 还没有搭建好店铺,但他希望确保 Alice 最终恰好买到 k 件珠宝。为了搭建店铺,Bob 最多可以设置 60 个摊位(每个摊位有无限数量的珠宝),并且每个摊位的每件珠宝价格可以设置为 1 到 1018 之间的任意整数。
幸运的是,Bob 知道 Alice 会采用贪心的购买方式:她会先去第 1 个摊位,尽可能多地购买珠宝,然后去第 2 个摊位,依此类推,直到最后一个摊位。基于这一点,Bob 可以选择设置摊位的数量,并为每个摊位设置价格,使得 Alice 恰好买到 k 件珠宝。请你帮助 Bob 完成这个任务,或者判断是否无法实现。
注意,Alice 不需要花光所有的硬币。
输入格式
每组测试数据包含多个测试用例。第一行包含一个整数 t(1≤t≤1000)——表示测试用例的数量。接下来的每组测试用例包含两个正整数 n 和 k(1≤n,k≤1018)——分别表示 Alice 拥有的硬币数量和 Bob 希望 Alice 最终买到的珠宝数量。
输出格式
对于每个测试用例,如果 Bob 能够设置不超过 60 个摊位,并为每个摊位设置价格,使得 Alice 恰好买到 k 件珠宝,则输出一行 "YES"。否则输出一行 "NO"。
如果答案是 "YES",则在第二行输出一个整数 s(1≤s≤60)——Bob 需要设置的摊位数量。在第三行输出 s 个正整数 p1,p2,…,ps(1≤pi≤1018),表示每个摊位的珠宝单价。如果有多种方案,输出任意一种均可。
输入输出样例
输入#1
3 7 3 6 4 255 8
输出#1
YES 10 2 3 4 5 6 7 8 9 10 11 NO YES 8 128 64 32 16 8 4 2 1
说明/提示
在第一个测试用例中,Alice 在第一个摊位购买了 3 件珠宝,还剩 1 枚硬币。这不足以在后续摊位购买任何珠宝,因此 Alice 最终恰好买到 3 件珠宝。
在第三个测试用例中:
- 在第一个摊位,Alice 购买了 1 件珠宝,还剩 127 枚硬币。
- 在第二个摊位,Alice 购买了 1 件珠宝,还剩 63 枚硬币。
- 在第三个摊位,Alice 购买了 1 件珠宝,还剩 31 枚硬币。
- 在第四个摊位,Alice 购买了 1 件珠宝,还剩 15 枚硬币。
- 在第五个摊位,Alice 购买了 1 件珠宝,还剩 7 枚硬币。
- 在第六个摊位,Alice 购买了 1 件珠宝,还剩 3 枚硬币。
- 在第七个摊位,Alice 购买了 1 件珠宝,还剩 1 枚硬币。
- 在第八个摊位,Alice 购买了 1 件珠宝,还剩 0 枚硬币。
因此,Alice 最终恰好买到 8 件珠宝。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?