对于Subtask1我们只需要暴力枚举即可。可以拿到10分,复杂度
MY CODE:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        long long n;
        long long m;
        cin>>n>>m;
        long long jsq=0;
        if(n<=5000&&m<=5000)
        {
            for(int i=1;i<n;i++)
            {
                for(int j=1;j<=n;j++)
                {
                    int ans=0;
                    if(i>=j)
                    {
                        if(i%j==0)
                        ans+=i/j;
                        else
                        ans+=i/j;
                        ans++;
                    }
                    if(i<j)
                    {
                        if(j%i==0)
                        ans+=j/i;
                        else
                        ans+=j/i+1;
                        //ans++;
                    }
                    if(ans==m&&i+j==n)
                    jsq++;
                }
            }
            cout<<jsq<<endl;
            continue;
        }
    }
    return 0;
}

对于Subtask2由于只有,才可以,所以我们可以令,所以我们就不需要枚举了复杂度
MY CODE:

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        long long n;
        long long m;
        cin>>n>>m;
        long long jsq=0;
        if(n<=5000&&m<=5000)
        {
            for(int i=1;i<n;i++)
            {
                    int j=n-i;
                    int ans=0;
                    if(i>=j)
                    {
                        if(i%j==0)
                        ans+=i/j;
                        else
                        ans+=i/j;
                        ans++;
                    }
                    if(i<j)
                    {
                        if(j%i==0)
                        ans+=j/i;
                        else
                        ans+=j/i+1;
                        //ans++;
                    }
                    if(ans==m&&i+j==n)
                    jsq++;
            }
            cout<<jsq<<endl;
            continue;
        }
    }
    return 0;
}

对于Subtask3,我们发现一定无解,所以只需要输出0即可。
对于Subtask4,我们发现一定无解,所以只需要输出0即可。
对于Subtask5,我们发现要不就是,要不就是,所以只需要输出1即可。
65pts!
我们可以找公式,发现公式很简单为。我们只需要套进去即可。
MY CODE:

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int t,n,m;
int main()
{
    cin>>t;
    while(t--)
    {
        cin>>n>>m;
        if(m==1)
        {
            puts("0");
            continue;
        }
        int ans=floor(n*1.0/m)-ceil(n*1.0/(m+1))+ceil(n*1.0/m)-floor(n*1.0/(m+1));
        cout<<ans<<endl;
    }
    return 0;
}

我谔谔。。