利用找因子来找方程解的个数

有一些方程要求我们求它的正整数解有多少个,现在我们就来解决一些方程。


 

题目一:HDU1299


题意:给出n的值,求方程满足条件:x<=y且x,y都是正整数解的个数。


解析:实际上就是先令y=n+k,带入解之:

 


 

然后就是求n^2的因子个数问题了。



 

题目二:HIT2893


题意:设方程是,输入一个数N,注意N可能为负数,然后求有多少个正整数x,y满足此方程。


解析:跟上题一样的方法。



题目三:NEFU647


题意:输入m,n,问有多少个x,y符合此方程,x,y都大于1,x<=y。


解析:本题先对m,n约分,然后可以先变形:


把mx,my当整体,分别是X,Y,然后就跟HDU1299的方法一样,这里要先求出所有因子,求出所有因子后,可以计算出X,Y然后判断对应的X,Y能否都整除m,如果都整除就count++


这里主要想重点说一下如何快速求一个数的因子:

先对要求的数n素因子分解,然后深搜就可以了。

void dfs(LL dep, LL product=1)
{
    if(dep==c)
    {
        arr[cnt++]=product;
        return;
    }
    for(int i=0;i<=a[dep];i++)
    {
        dfs(dep+1,product);
        product*=p[dep];
    }
}



 

题目四:SPOJ1434 


题意:对于方程,输入N,求有多少个x,y满足此方程,其中x<=y.


解析:我就不说跟上面的题是一样的方法了,注意N!可以很大,用Java的BigInteger做。

 

 

题目五:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1165

 

题意:给定一直角三角形的周长L,求有多少个这样的直角三角形。注意这里数据很多,50000组,且L<10^7

 

 

分析:

由:,消去z得到:,把x,y,z都表示出来后发现只要y是整数,那么x,z也就是整数了。我们进一步令,我们得到:,根据x,y,z的范围我们可以确定出k的范围满足所以问题就转化为求因子fac中满足条件的个数。

 


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值