牛客月赛31-解方程-(因子个数)

60 篇文章 1 订阅

E

题意:
给你两个正整数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;
}

总结:
多多积累经验,多想想关于此的知识点之类的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值