暴力求解的话时间复杂度根本不能达到要求,所以我们直接去
推出这个数学问题的*****公式****
#include<stdio.h>
int main()
{
//考的是数学只是,暴力求解的话时间复杂度根本不能达到要求,所以我们直接去
//推出这个数学问题的*********公式********
//这一这题数据很大,定义成int 时不可以通过的
long n=0,k=0;
while(~scanf("%ld %ld",&n,&k))
{
if(k==0)
{
printf("%ld\n",n*n);
continue;
}
long count=0;
for(long y=k+1;y<=n;y++)
{
long ret=n%y<k?0:n%y-(k-1);
count+=(y-k)*(n/y)+(ret);
}
printf("%ld\n",count);
}
//过不去的。暴力求解:时间复杂度太高了。数比较大时,很耗费时间。
// int n=0;
// int k=0;
// long long count=0;
// scanf("%d %d",&n,&k);
// long long i=0,j=0;
// for(i=1;i<=n;i++)
// {
// for(j=1+k;j<=n;j++)
// {
// if(i%j>=k)
// {
// count++;
// }
// }
// }
// printf("%lld\n",count);
return 0;
# }