解题思路
这就是一个给定立方体体积,求立方体长宽高有多少种可能的题目,刚开始我想直接三重循环暴力枚举,但是数实在是太大了,跑不出来,因此就想着优化一下,既然体积是由 长×高×宽得来的,那么长宽高一定都是体积的因子,我们可以先把体积的所有因子求出来放到vector容器中,然后再从它的因子中找到三个数相乘能得到体积的情况,时间复杂度小了很多,可以很快跑出来
#include<bits/stdc++.h>
using namespace std;
#include<vector>
int main()
{
long long sum = 0,num = 2021041820210418;
vector<long long> v1;
for(long long i = 1 ; i <= sqrt(num) ; i++){
if(num%i==0){
v1.push_back(i);
long long j = num/i;
if(j != i){
v1.push_back(j);
}
}
}
vector<long long>::iterator a,b,c;
for(a = v1.begin();a !=v1.end(); a++)
for(b = v1.begin(); b != v1.end(); b++)
for(c = v1.begin(); c != v1.end(); c++){
if((*a)*(*b)*(*c) == num){
sum++;
}
}
cout<<sum<<endl;
return 0;
}