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