搜索
查看: 1423|回复: 1
打印 上一主题 下一主题

[题目/题解] hankson的趣味题

[复制链接]
跳转到指定楼层
楼主
发表于 2013-2-20 20:39:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[code=Cpp width=740px]
#include<stdio.h>
#include<math.h>
int gcd (int a,int b)
{
    int t;
    t=a%b;
    while(t!=0)
    {
        a=b;
        b=t;
        t=a%b;  
    }
    return b;
}
int main()
{
    int a0,a1,b0,b1,i,j,t1;
    int sum=0;
    int n,t;
    scanf("%d",&n);
    for(j=1;j<=n;j++)
    {
        sum=0;
        scanf("%d%d%d%d",&a0,&a1,&b0,&b1);
        t=sqrt(b1);//这里很重要 不用枚举到b1,只要枚举到sqrt(b1),就好了,因为约数是成对出现的
        for(i=1;i<=t;i++)
        {
            if(b1%i==0)//首先要保证这个i是b1的约数
            {
                if(gcd(i,a0)==a1 && i*b0==b1*gcd(i,b0))
                {
                    sum++;
                }
               
                t1=b1/i;
                if(i!=t1 && gcd(t1,a0)== a1 && t1*b0==b1*gcd(t1,b0))
                    sum++;
                }
            }
         
        printf("%d\n",sum);
}
    return 0;
}
</math.h></stdio.h>[/code]
沙发
发表于 2013-11-21 09:59:16 | 只看该作者
这些帖子怎么就只有我一个人回复???
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表