hdu5505 GT and numbers(BestCoder Round #60)

分析:

大于那么显然无解。

和分解质因数。

存在没有的质因数也显然无解。

的质因数的次数。为了加速接近,,它一定是每次翻倍,最后一次的时候把剩下的加上。

使得2kAnum≥Bnum2^{k}*A_{num} \geq B_{num}。

最后把每个质因数的答案max起来即可。(B可以是2^63,这样就得用unsigned long long了,这是个坑点)

#include <iostream>#include <cstdio>#include <cstring>#include <stack>#include <queue>#include <map>#include <set>#include <vector>#include <cmath>#include <algorithm>using namespace std;const double eps = 1e-6;const double pi = acos(-1.0);const int INF = 0x3f3f3f3f;const int MOD = 1000000007;#define ll long long#define CL(a) memset(a,0,sizeof(a))unsigned ll n,m;ll gcd(ll a, ll b){if(a%b)return gcd(b, a%b);return b;}int main(){int T;cin>>T;while(T–){cin>>n>>m;int ans=0;while(n!=m){if(m%n){cout<<"-1"<<endl; break;}ll k=gcd(m/n, n);if(k==1){cout<<"-1"<<endl; break;}n*=k;ans++;}if(n==m) cout<<ans<<endl;}return 0;}

2632^{63这样就要开unsigned long long。

如若今生再相见,哪怕流离百世,迷途千年,也愿。

hdu5505 GT and numbers(BestCoder Round #60)

相关文章:

你感兴趣的文章:

标签云: