CF1951D.Buying Jewels

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Nightwish feat. Jonsu - Erämaan Viimeinen

ඞ

Alice 有 nn 枚硬币,想在 Bob 的珠宝店购物。今天,虽然 Bob 还没有搭建好店铺,但他希望确保 Alice 最终恰好买到 kk 件珠宝。为了搭建店铺,Bob 最多可以设置 6060 个摊位(每个摊位有无限数量的珠宝),并且每个摊位的每件珠宝价格可以设置为 11 到 101810^{18} 之间的任意整数。

幸运的是,Bob 知道 Alice 会采用贪心的购买方式:她会先去第 11 个摊位,尽可能多地购买珠宝,然后去第 22 个摊位,依此类推,直到最后一个摊位。基于这一点,Bob 可以选择设置摊位的数量,并为每个摊位设置价格,使得 Alice 恰好买到 kk 件珠宝。请你帮助 Bob 完成这个任务,或者判断是否无法实现。

注意,Alice 不需要花光所有的硬币。

输入格式

每组测试数据包含多个测试用例。第一行包含一个整数 tt(1≤t≤10001 \le t \le 1000)——表示测试用例的数量。接下来的每组测试用例包含两个正整数 nn 和 kk(1≤n,k≤10181 \le n, k \le 10^{18})——分别表示 Alice 拥有的硬币数量和 Bob 希望 Alice 最终买到的珠宝数量。

输出格式

对于每个测试用例,如果 Bob 能够设置不超过 6060 个摊位,并为每个摊位设置价格,使得 Alice 恰好买到 kk 件珠宝,则输出一行 "YES"。否则输出一行 "NO"。

如果答案是 "YES",则在第二行输出一个整数 ss(1≤s≤601 \le s \le 60)——Bob 需要设置的摊位数量。在第三行输出 ss 个正整数 p1,p2,…,psp_1, p_2, \ldots, p_s(1≤pi≤10181 \le p_i \le 10^{18}),表示每个摊位的珠宝单价。如果有多种方案,输出任意一种均可。

输入输出样例

  • 输入#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 在第一个摊位购买了 33 件珠宝,还剩 11 枚硬币。这不足以在后续摊位购买任何珠宝,因此 Alice 最终恰好买到 33 件珠宝。

在第三个测试用例中:

  • 在第一个摊位,Alice 购买了 11 件珠宝,还剩 127127 枚硬币。
  • 在第二个摊位,Alice 购买了 11 件珠宝,还剩 6363 枚硬币。
  • 在第三个摊位,Alice 购买了 11 件珠宝,还剩 3131 枚硬币。
  • 在第四个摊位,Alice 购买了 11 件珠宝,还剩 1515 枚硬币。
  • 在第五个摊位,Alice 购买了 11 件珠宝,还剩 77 枚硬币。
  • 在第六个摊位,Alice 购买了 11 件珠宝,还剩 33 枚硬币。
  • 在第七个摊位,Alice 购买了 11 件珠宝,还剩 11 枚硬币。
  • 在第八个摊位,Alice 购买了 11 件珠宝,还剩 00 枚硬币。

因此,Alice 最终恰好买到 88 件珠宝。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页