题解:P11275 微观戏剧

Pro

定义一次转化 uvu\Rightarrow v 代价为 lcm(u,v)\operatorname{lcm}(u,v),求 uvu\Rightarrow v 的最小代价。

Sol

如果 u=vu=v,不需要转化,代价 00

其次可以 u1vu\Rightarrow 1\Rightarrow v,这样代价是 u+vu+v

但是有没有特殊情况呢?比如 uuvv 有倍数关系?

这时的代价是 max(u,v)\max(u,v) 的。

对于其他的 uxvu\Rightarrow x\Rightarrow v,代价是 uxgcd(u,x)+vxgcd(v,x)\dfrac{ux}{\gcd(u,x)}+\dfrac{vx}{\gcd(v,x)},可以发现这个东西的最小值为 u+vu+v,取等条件是 xxgcd(u,v)\gcd(u,v) 的因数,令 x=1x=1 即可。

所以这题就做完了。

Code

#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
	int T;
	cin>>T;
	while(T--)
	{
		int n,m;
		cin>>n>>m;
		if(n==m) cout<<"0\n";
		else if(n%m==0||m%n==0) cout<<max(n,m)<<endl;
		else cout<<n+m<<"\n";
	}
	return 0;
}
posted @ 2024-11-15 09:34  sLMxf  阅读(37)  评论(0)    收藏  举报  来源