1 solutions
-
0
Guest MOD
-
0
解法一:
首先要想到,当总共有m种玩具,数量分别为a[1..m]时,可选择的天数为Π(a[i]+1)。
现在给定了可选天数n,那么问题成了:将n分解为若干正整数的乘积,求每种划分的正整数-1之和的所有可能。
由于每种划分的数字数量不会很多,可以考虑用dfs解决这个问题,即dfs时每次枚举一个正整数,时刻保证乘积不超过n,当乘积等于n时,得到一种可能的答案。
根据dfs实现的效率不同,可得30~50分。
解法二:
dfs时可以不用枚举每一个数,只需要枚举(n/当前乘积)的每一个约数即可。根据枚举约数的方式不同,可得60~100分。
其中,枚举约数最快的一个方法是,首先预处理出n的所有约数,每次只要从这些数里面找(n/当前乘积)的约数即可。为了进一步提高效率,可以强制令每次枚举出的a[i]不大于a[i-1],从而避免一些重复答案。
Information
- ID
- 374
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 8
- Tags
- (None)
- # Submissions
- 18
- Accepted
- 6
- Uploaded By