题意:
给你两个正整数a,b,计算满足方程ax+by=x*y的正整数(x,y)的组数。
思考:
刚开始我两边都除以了xy,然后去看b和a的因子啥的,但是很麻烦感觉,最后推出来提交上去也是错的,那么思路就错了。然后其实就是化简,让y=…x之类的,可以看出来所有答案就是ab的因子个数,那就很明显了分解质因数,求因子个数就行了。最后想一想,其实这种题目就这几个地方能考,尽量往这方面看就行了。
还有一个和这个差不多的题樱花,本质都是一样的去化简。
代码:
int T,n,m,k;
int va[N];
signed main()
{
IOS;
cin>>T;
while(T--)
{
cin>>n>>m;
map<int,int > mp;
for(int i=2;i<=n;i++)
{
while(n%i==0) n /= i,mp[i]++;
}
if(n>1) mp[n]++;
for(int i=2;i<=m;i++)
{
while(m%i==0) m /= i,mp[i]++;
}
if(m>1) mp[m]++;
int ans = 1;
for(auto t:mp) ans *= t.se+1;
cout<<ans<<"\n";
}
return 0;
}
总结:
多多积累经验,多想想关于此的知识点之类的。