题目描述:
给出n个数,b1,b2,b3……bn,构造n个数,a1,a2,……an(ai>1),使得a1*a2*a3……an=b1*b2……bn;
问一共有多少种数列a1,a2,……an满足上述条件。
输入:
包含多组输入数据
每组数据第一行有1个整数n(1<=n<=20)
每组数据第 二行有n个整数第i个数表示bi.(1<bi<=1000000)且b1*b2*…*bn <10^25)。
输出:
对于每组测试数据,输出有多少种数列满足情况,结果对1e9+7取余
输入样例:
2
3 4
输出样例:
4
提示:
无
思路分析:
想一想,如果它们的积相等则它们的质数唯一分解就相等。
毕竟是方案数,那么排列组合是一定的,那么我们先递推出组合数。
然后就是求解了。
我们可以这样想,指数就是特产的个数,而不同的底数就是特产,而n就是人数。
先考虑一种特产的情况:
可以使用容斥原理。设S表示全集,Pi表示至少有i个人没有分到特产的方案数。

这篇博客探讨了一道关于数列构造的问题,要求构造满足特定条件的数列a1, a2, ..., an,使得这些数的乘积等于另一组数b1, b2, ..., bn的乘积。博主通过分析指出,由于两组数的质因数分解相同,因此可以利用容斥原理来解决。博客内容包括问题描述、输入输出格式、样例、思路分析和C++代码实现,着重讲解如何利用容斥原理计算满足条件的数列方案数,并给出了递推组合数的方法。"
74531236,1010870,TensorFlow 中的 tf.split 和 tf.unstack 操作解析,"['深度学习', 'TensorFlow', '张量操作']
最低0.47元/天 解锁文章
13万+

被折叠的 条评论
为什么被折叠?



