Jellyfish and Green Apple
最小切几刀分苹果
判断-1的条件是最小公倍数/m不是2的倍数,那么苹果不能被一刀切成两块
#include<iostream>
#define int long long
using namespace std;
int gcd(int a, int b)
{
if (b == 0)
return a;
return gcd(b, a % b);
}
signed main()
{
int T;cin>>T;
while(T--){
int n,m;cin>>n>>m;
if(n%m==0){
cout<<0<<endl;
}else{
int M=m/gcd(n,m),f=0;
while(M>1){//判断能不能切
if(M&1){f=1;break;}
M/=2;
}
if(f==1) {cout<<-1<<endl;continue;}
n%=m;//可以切,计算最小切的次数
int ans=n;
while(n%m){n*=2;n%=m;ans+=n;}
cout<<ans<<endl;
}
}
}