当前位置:  开发笔记 > 编程语言 > 正文

给定数字N,有多少对数字的平方和小于或等于N?

如何解决《给定数字N,有多少对数字的平方和小于或等于N?》经验,为你挑选了0个好方法。

让我们定义F(N)作为对不同的正整数的数目(A,B) ,使得2 + B 2 ≤NA .

如果N = 5,唯一可能的这样的对是(1,2),对于N = 10,对是2: (1,2)(1,3).

此外,我们有F(13)= 3,F(17)= 4,F(17)= 4,F(20)= 5,F(20)= 5,F(25)= 6,F(100)= 31等每一个号码,其是两个不同的非零平方和.

到目前为止,我有以下解决方案:

long long SOLVE(lld n)
{
    long long x=sqrt(n),up=0;
    long long a=x,b=1;
    while(abs(a-(b-1))!=1)
    {

        while(sqr(a)+sqr(b)<=n )
        {
            b++;
        }
        up+=(b-1);
        a--;
    }
    b--;
    up+=(b*(b+1))/2;
    return up;
}
int main()
{
      cout<

相同的数字是不可数的,因此(1,1)(2,2)是无效的元组.相同但不同的订单只计算一次.因此,(1,2)(2,1)仅计为一次.

但由于N的范围是1,我需要一个更有效的算法或公式来计算它.有什么技巧可以让我的代码更有效率吗?

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有