永发信息网

Pascal 幸运数问题

答案:2  悬赏:20  手机版
解决时间 2021-05-07 22:08
  • 提问者网友:兔牙战士
  • 2021-05-07 00:18

【背景描述】

小刚背完了单词,上课铃又响了……

【问题描述】

第二节是数学课。小刚最喜欢一些数,也喜欢这些数的乘积(包括自己乘自己,如6*6)。比如他最喜欢3、5、10,则他在不大于一百的正整数中喜欢3(3)、5(5)、9(3*3)、10(10)、15(3*5)、25(5*5)、27(3*3*3)、30(3*10)、45(3*3*5)、50(5*10)、75(3*5*5)、81(3*3*3*3)、90(3*3*10)、100(10*10)14个。

请你帮他输出他在一定范围内喜欢的数。

注意:

1. 如果有两个相同的乘积,则算一个。如喜欢3、8、4、6,则喜欢24(3*8或4*6)。

2. 喜欢的数没有0。

【输入】

输入文件lucky.in共两行。

第一行两个整数n,m(n为小刚最喜欢的数字个数(n<=30)。m(m<=10000)为求出来的小刚所喜欢的数∈N+,且<=m)。

第二行n个整数,(所有整数<=100且>=1)

【输出】

输出文件lucky.out共两行。

第一行是一个整数k,表示小刚所喜欢的数的个数。

第二行输出k个小于等于m的所有小刚喜欢的数。

(如果k=0则只输出“No answer!”)

他在不大于十的正整数中喜欢3(3)、5(5)、9(3*3)、10(10)共4个。

【输入输出样例1】

lucky.in

lucky.out

3 100

3 5 10

14

3 5 9 10 15 25 27 30 45 50 75 81 90 100

【输入输出样例1解释】

他在不大于一百的正整数中喜欢3(3)、5(5)、9(3*3)、10(10)、15(3*5)、25(5*5)、27(3*3*3)、30(3*10)、45(3*3*5)、50(5*10)、75(3*5*5)、81(3*3*3*3)、90(3*3*10)、100(10*10)14个。

【输入输出样例2】

lucky.in

lucky.out

3 1

3 5 10

No answer!

【限制】

数据1~10满足:n<=10 m<=100

数据11~30满足:n<=30 m<=100

数据31~60满足:n<=10 m<=10000

数据61~100满足:n<=30 m<=10000

最佳答案
  • 五星知识达人网友:十年萤火照君眠
  • 2021-05-07 01:53
可以用动态规划。当我们已经知道小刚喜欢某个数a,那么他也喜欢a与那k个数的积,这样我们可以用布尔数组f记录某个数小刚是否喜欢,当他喜欢时,就计算a与那k个数的积b1,b2,b3...bk,把f[b1],f[b2]...f[bk]的值改变为true(或false,反正标识为喜欢)
全部回答
  • 1楼网友:十年萤火照君眠
  • 2021-05-07 02:39
此题用动态规划
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯