思路:由於x是b1的約數,所以x的質因子一定也是b1的質因子,
我們可以對b1的每個質因子p,分別計算a0,a1,b0,b1分別
包含多少個p.然後討論x可能含有幾個p即可
#include
#include
#include
#include
#include
#include
using namespace std;
int a[100005],b[100005];
int main()
int k=0;
for(int i=2; i<=100000; i++)
if(b[i]==0)
a[++k]=i;
for(int j=i; j<=100000/i; j++)
b[j*i]=1;
int t,n,x0,x1,y0,y1;
scanf("%d",&t);
while(t--)
scanf("%d %d %d %d",&x0,&x1,&y0,&y1);
int ans=1;
for(int i=1; i<=k; i++)
int s=0;
if(y1==1)
break;
if(y1%a[i]==0)
while(y1%a[i]==0)
s++;
y1=y1/a[i];
int u1=0,u2=0,u3=0;
while(x0%a[i]==0)
x0=x0/a[i];
u1++;
while(x1%a[i]==0)
x1=x1/a[i];
u2++;
while(y0%a[i]==0)
y0=y0/a[i];
u3++;
if(u1==u2&&u3
ans=0;
y1=1;
break;
else if(u1==u2&&u3==s)
if(s
y1=1;
ans=0;
break;
else
ans=ans*(s-u1+1);
else if(u1>u2&&u3
ans=0;
y1=1;
break;
else if(u1>u2&&u3==s&&u2>s)
ans=0;
y1=1;
break;
if(y1>1)
if(y0==y1&&x1==1)
ans=ans*2;
else if(x1!=1)
ans=0;
printf("%d\n",ans);
Hankson的趣味題
問題描述 hanks博士是bt bio tech,生物技術 領域的知名專家,他的兒子名叫hankson。現在,剛剛放學回家的hankson正在思考乙個有趣的問題。今天在課堂上,老師講解了如何求兩個正整數c1和c2的最大公約數和最小公倍數。現在hankson認為自己已經熟練地掌握了這些知識,他開始思考...
Hankson的趣味題(藍橋杯)
時間限制 1 sec 記憶體限制 128 mb 提交 命題人 外部匯入 題目描述hanks 博士是bt bio tech,生物技術 領域的知名專家,他的兒子名叫hankson。現 在,剛剛放學回家的hankson 正在思考乙個有趣的問題。今天在課堂上,老師講解了如何求兩個正整數c1 和c2 的最大公...
NOIP09 Hankson的趣味題
hanks 博士是bt bio tech,生物技術 領域的知名專家,他的兒子名叫hankson。現在,剛剛放學回家的hankson 正在思考乙個有趣的問題。今天在課堂上,老師講解了如何求兩個正整數c1 和c2 的最大公約數和最小公倍數。現在hankson 認為自己已經熟練地掌握了這些知識,他開始思考...