SCP-J T1 题目传送门
评测状态:1-3 AC,4-5 TLE,6-7 RE,8 AC,9-10 TLE(R181736363)
思路:若 n÷x=k⋯⋯r(其中 x 为除数),那么直接用 n÷k 可以反推出除数 x(忽略余数部分)。然后再把除数 x 向下枚举,如果 n÷x 还是等于 k,那么 ans←ans+1 并且 x←x−1;否则就跳出循环。
代码:
#include <iostream>
using namespace std;
long long n,beichushu,shang;
int main()
{
cin>>n;
while(n--)
{
cin>>beichushu>>shang;
if(shang==0)
{
cout<<1<<'\n';
continue;
}
long long u=beichushu/shang;
long long i=u;
long long ans=0;
while(1)
{
if(beichushu/i!=shang) break;
ans++;i--;
}
cout<<ans<<'\n';
}
return 0;
}
请讲讲我的算法有什么错误,或者程序实现细节有哪一点不对,然后再给出代码。谢谢!
感谢各位dalao的帮助!