#2373. 数字拆分

数字拆分

数字拆分

算法标签

Level2, 数学2, GESP3级

题目背景

小明是一位热衷于探索古老数学遗迹的探险家。他发现了一些神秘的谜题,需要你来帮助他解决。

题目描述

在一个古老的遗迹中,给定整数 nnkk,需要判断能否通过恰好选择 kk 个形如 3m3^mmm 为非负整数)的特殊数字相加得到 nn

换言之,是否存在非负整数序列 {a1,a2,,ak}\{a_1, a_2, \dots, a_k\},使得

n=3a1+3a2++3ak.n = 3^{a_1} + 3^{a_2} + \dots + 3^{a_k}.

输入格式

第一行包含一个正整数 TT,表示谜题的个数。
接下来 TT 行,每行包含两个整数 nnkk

输出格式

输出共 TT 行,对于每一道谜题,如果可以则输出 "Yes",否则输出 "No"。

样例

4
5 3
17 2
5 2
1000000000000000000 1000000000000000000
Yes
No
Yes
Yes

样例解释

样例一:5=31+31+305 = 3^1 + 3^1 + 3^0,故输出 Yes。
样例二:无法用两个 3m3^m 的和表示 17,故输出 No。

数据范围

  • 对于 30% 的数据,保证 n10, k5n \le 10,\ k \le 5
  • 对于 30% 的数据,保证 n1000, k2n \le 1000,\ k \le 2
  • 对于 100% 的数据,保证 1k109, 1T105, n1 \le k \le 10^9,\ 1 \le T \le 10^5,\ n 在 64 位有符号整数范围内。