
题目的意思就是,给我们一个n,我们将n分解为3个数的乘积。且4=1*2*2,和4=2*1*2视为不同的方案,即排列,不是组合。
问一共有多少用不同的分解方式
这个题需要我们看一下,n有什么性质
发现n=a*b*c,a,b,c必然都是n的约数
所以这个题可以先求一下n的所有约数,用vector来存储
然后三个for循环暴力来写,如果n=a*b*c ,ans++
如何求一个数的约数:Acwing--试除法求约数_wowon~的博客-优快云博客
答案:2430
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<ll>v;
ll n;
int main()
{
n=2021041820210418;
for(int i=1;i<=n/i;i++)
{
if(n%i==0){v.push_back(i);
if(i!=n/i)v.push_back(n/i);
}
}
ll ans=0;
for(int a=0;a<v.size();a++)
{
for(int b=0;b<v.size();b++)
{
for(int c=0;c<v.size();c++)
{
if(v[a]*v[b]*v[c]==n)
ans++;
}
}
}
cout<<ans<<endl;
return 0;
}
该博客介绍了如何找到一个整数n的不同三数乘积分解方式。通过找出n的所有约数并使用三层循环遍历组合,计算满足n=a*b*c的解的数量。博主给出了C++代码实现,并展示了对于给定数2021041820210418,存在2430种不同的分解方式。
1159

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



