#include<stdio.h>
int ek(int di,int ci){
int v=1;
if(ci==0) return 1;
if(ci%2==1){
v=di;
}
return ek(di,ci/2)*ek(di,ci/2)*v;
}
bool flag[100005];
int main(){
int b,a,num=0;
scanf("%d%d",&a,&b);
if(b%a!=0){
printf("0");
return 0;
}
a=b/a;
// printf("%d",a);
int cnt=0;
for(int i=2;i<=a;i++){
if(flag[i]==0&&a%i==0){
for(int j=2;j*i<=a;j++){
flag[j*i]=1;
}
cnt++;
// printf("%d ",i);
}
}
// printf("cnt=%d\n",cnt);
printf("%d",ek(2,cnt));
}
这个代码里 if(ci==0) return 1; 刚开始用的是
if(ci==1) return 1;
所以卡在100 , 100这个点上
但为什么显示MLE??