Hdu 1299 (Diophantus of Alexandria)

        题目大意:给你一个数N 求 1/X+1/Y=1/N 中X ,Y 有几种组合。

  分析思路: 由题意可知 X〉N,Y〉N。  我们可令 Y=N+ K(K为正整数)。

                                化简可得 X= (N* N)/ K + N 。   X,Y 为正整数 。 

                                所以呢, 只需N* N的因子数即可。

                               知道了这个,之后就直接 A 就行。

         代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

#define Len 50000

bool a[Len];
int b[Len];
int k;
void Isprime()
{
     int i,j;
     a[2]=true;
     k=1;
     b[0]=2;
     for(i=3;i<Len;i++)
     {
                       if(i&1)
                       a[i]=true;
                       else
                       false;
     }
     for(i=3;i<Len;i++)
     {
                       if(a[i])
                       {
                               b[k]=i;
                               k++;
                               for(j=i+i;j<Len;j+=i)
                                                    a[j]=false;
                       }
     }
}
int main()
{
    Isprime();
    int x,n,i,j,sum,m=1,t;
    scanf("%d",&n);
    while(n--)
    {
              j=0;
              sum=1;
              scanf("%d",&x);
              for(i=0;i<k;i++)
              {
                    t=0;
                    if(x<b[i])
                    break;
                    while(x%b[i]==0 )
                    {
                           x=x/b[i]; 
                           t++;        
                    }
                    sum *= (t*2+1);
                    j++;
              }
              printf("Scenario #%d:\n",m);
              m++;
              if(x>1)  // 可能 存在 一个 素数 X . 
              sum*=3;
              printf("%d\n\n",(sum+1)/2);
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值