先规定
a≤b≤c
考虑暴力枚举a和b
那么c的取值一定是一个区间
然后讨论一下相同值的情况即可
复杂度显然是 O(n23)
示例程序:
#include<cstdio>
#define LL long long
LL n;
int main(){
int i=0;
while (~scanf("%lld",&n)){
LL ans=0;
for (LL i=1;i*i*i<=n;i++)
for (LL j=i;j*j*i<=n;j++){
LL num=n/(i*j)-j+1;
if (i==j) ans+=num*3-2;else
ans+=num*6-3;
}
printf("Case %d: %lld\n",++i,ans);
}
return 0;
}

本文介绍了一种通过限定变量范围并采用枚举策略求解特定数学问题的方法。通过对变量a、b、c进行合理限定,利用枚举的方式找到满足条件的解,并通过优化减少重复计算,最终实现O(n^(2/3))的时间复杂度。
595

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



