暴力求解的话时间复杂度根本不能达到要求,所以我们直接去

推出这个数学问题的*****公式****

#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;
# }