#3186. 二进制寻宝

二进制寻宝

题目描述

蛇年跨年庆典推出了二进制数字寻宝活动,参与者需破解数字密码赢取新年礼品。活动规则如下:给定两个正整数n和k(k≥1,最低位为二进制第1位),需在1到n的所有整数中,筛选出二进制表示中第k位为1的所有数字,计算这些数字的乘积后,对乘积进行质因数分解,最终按质因数从小到大的顺序输出每个质因子及其对应的指数。

例如:

  • 当n=10、k=2时,1-10中二进制第2位为1的数是2、3、6、7、10,它们的乘积为2×3×6×7×10=2520;
  • 2520的质因数分解结果为2³×3²×5¹×7¹,因此输出对应质因子和指数。

输入格式

第一行包含两个正整数n和k,分别表示数字范围上限和二进制位数(k≥1)。

输出格式

按质因数从小到大的顺序,每行输出一个质因子及其指数,格式为“质因子:指数”。 如果没有质因子,不输出内容

输入输出样例 #1

输入 #1

10 2

输出 #1

2:3
3:2
5:1
7:1

数据规模

  • 对于20%的测试点:n≤100,k≤5;
  • 对于100%的测试点:n≤10⁵,k≤20。

样例解释

  • 输入n=10、k=2(二进制第2位,最低位为第1位),需筛选二进制第2位为1的数:2(10)、3(11)、6(110)、7(111)、10(1010);
  • 计算乘积:2×3×6×7×10=2520;
  • 2520分解质因数为2³×3²×5¹×7¹,按从小到大顺序输出每个质因子及其指数。