题目:
解题思路:
就是求一个数的所有因数并乱序相乘。通过1×1×4 1×4×1 4×1×1可知不同位置算不同的方案。所以我们可以通过循和sqrt(n)函数,求出n的所有因数放到一个数组中,通过三层循环暴力匹配n。
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n=2021041820210418;
ll a[3000],cnt=0; // 存放因子
int main(){
// 用循环找出所有因子 放入数组中
for(int i=1;i<sqrt(n);i++){
if(n%i==0){
a[++cnt]=i;
if(i*i!=n) a[++cnt]=n/i;
}
}
ll ans;
// 三层循环 暴力搜索
for(int l=1;l<=cnt;l++){
for(int w=1;w<=cnt;w++){
for(int h=1;h<=cnt;h++){
if(a[l]*a[w]*a[h]==n) ans++;
}
}
}
cout<<ans<<endl;
}
答案:
2430