题目大意
简单点描述就是给定一个 n,n=2021041820210418,问满足 (a,b,c)=n的(a,b,c)组合有多少种。
答案:2430
解题思路
⭐⭐首先要明确a,b,c这三个数一定都是n的因数,因为a×b×c=n,把b×c看作一个数即a×(b×c)=n,那么a就是n的一个因数,同理b和c也是n的因数。
那么只要求出n的所有因数,然后依次枚举(a,b,c)即可。
🌙不要忽略n是long型,设置循环变量时也要考虑需不需要用long。
🌙着重考虑一下如何求n的所有因数,由于n数字过大,不恰当的方法可能消耗时间过于长,甚至根本求不出来。
代码解析
import java.util.*;
public class Main {
public static void main(String[] args) {
long n=2021041820210418l;//结尾加l表示是一个long型数/
long temp=n;
Set<Long> set=new HashSet<>();
//计算n的所有因数,并存放到集合factor中
for(long i=1;i<=temp;i++){
if(n%i==0){
temp=n/i;
set.add(i);
set.add(temp);
}
}
ArrayList<Long> factor=new ArrayList<>(set);
//枚举{a,b,c}
int count=0;
long t=0;
for(int i=0;i<factor.size();i++){
long a=factor.get(i);
for(int j=0;j<factor.size();j++){
long b= factor.get(j);
if(a*b>n){
continue;
}
for(int k=0;k< factor.size();k++){
long c=factor.get(k);
if(a*b*c==n){
count++;
}
}
}
}
System.out.println(count);
}
}