#HX1260A. 收集数字币

提交20 通过13
通过率65%
时间限制1000ms
内存限制128MiB
    ID: 10127 传统题 1000ms 128MiB 尝试: 20 已通过: 13 难度: 普及 上传者: 标签>搜索算法编程题C++CSPCSP复赛CSP复赛专项练习暑假CSP复赛集训暑假集训1260-深搜+图搜

题目描述

题目描述

合数:指在大于 11 的整数中除了能被 11 和本身整除外,还能被其它正整数整除的数。

例如 4444 除了能被 1144 整除,还可以被 22 整除。

小珅收藏了 nn2n252\le n\le 25)个数字币,每个数字币上都有一个面值(面值可以重复)。从数字币中任选 kk2kn2\le k\le n)个,有多种选法,请将每次选择的数字币上的面值累加,然后解决以下两个问题:

  • 问题11:累加的和中有多少种不同的结果;

  • 问题22:累加的和中有多少个不同的合数。

例如:n=5n=5k=3k=355 个数字币上的面值分别为 2,1,4,5,32, 1, 4, 5, 3,任选 33 个数字币,有 1010 种选法,将每种选法上的面值累加:2+1+4=72 + 1 + 4 = 72+1+5=82 + 1 + 5 = 82+1+3=62 + 1 + 3 = 62+4+5=112 + 4 + 5 = 112+4+3=92+4+3=92+5+3=102 + 5 + 3 = 101+4+5=101 + 4 + 5 = 101+4+3=81 + 4 + 3 = 81+5+3=91 + 5 + 3 = 94+5+3=124 + 5 + 3 = 12

其中累加的和中有 77 种不同的结果,分别是 7,8,6,11,9,10,127, 8, 6, 11, 9, 10, 12,累加的和中有 55 个不同的合数,分别是 8,6,9,10,128, 6, 9, 10, 12

输入格式

第一行,包含两个正整数 n,kn,k,表示数字币的个数和所要选取的数字币个数。

第二行,包含 nn 个正整数 a1,a2,,ana_{1},a_{2},\cdots ,a_{n},表示数字币上的面值,正整数之间以一个空格隔开。

输出格式

一行,输出两个整数,分别表示累加的和中不同结果的个数以及累加的结果中不同合数的个数,两个整数之间以一个空格隔开。

样例输入

5 3
2 1 4 5 3

样例输出

7 5

提示

6060% 的数据保证:2kn<202\le k\le n\lt 20

100100% 的数据保证:2kn25,1ai100002\le k\le n\le 25,1\le a_{i}\le 10000

2 2
1 1
1 0
5 3
2 1 4 5 3
7 5
3 3
3516 9386 6621
1 1