对于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;
} 我谔谔。。

京公网安备 11010502036488号