AtCoder Beginner Contest 227C题ABC conjecture(数学)

题目链接
AtCoder Beginner Contest 227C题ABC conjecture(数学)_第1张图片
题意很显然,但是咋求捏。
考虑枚举A,即有n1/3 这么多
然后枚举B,B是>=A的
那么会获得一个最大的范围即N/(A*B)
现在C的取值方案只需要范围减去B的方案即可
emmm(不知道听不听得懂)


signed main(){

ll n;
read(n);
ll ans=0;
for(int i=1;i*i*i<=n;i++){
   ll ok=n/i;
   for(int j=i;j<=n;j++){
   ll now=n/(i*j);
   if(now<j||now<i)break;
   ans=ans+(now-j+1);
   }
}
printf("%lld",ans);
}

你可能感兴趣的:(动态规划,算法)