原题链接:T517829 GCD变换
这道题很唐氏,但是我不会(
在cjy1024的指点下,这道题我会了。
结论:每一次让 \(x=x\cdot \gcd\{x,\frac{m}{x}\}\)。
我们为了让他们尽量次数少,所以我们希望乘上 \(\frac{m}{x}\),但如果 gcd
不满足的话,那么我们就乘上 \(\frac{m}{x}\) 的因数即可。
误解情况即为 \(x\neq m\) 并且 \(\gcd\{x,\frac{m}{x}\}=1\)。
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,n,m,cnt;
signed main()
{cin>>t;while(t--){cin>>n>>m;cnt=0;while(n<m){cnt++;if(__gcd(n,m/n)==1&&n!=m){cnt=-1;break;}n*=__gcd(n,m/n);}cout<<cnt<<endl;}return 0;
}
真不好评价如此简单的猜结论题。