完全平方数

Posted fanmu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了完全平方数相关的知识,希望对你有一定的参考价值。

给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。

思路1:BFS

相当于找一条步数最短的路径,使得权重和等于n

思路2:trick

利用四平方和定理:任意一个正整数都能表示成不超过4个整数的平方和。其推论就是:如果一个正整数可以表示成4个整数的平方和,那么也可以表示为技术图片

综上,问题的答案只有1,2,3,4。先通过推论判断是不是4,再看能不能由1或2个整数的平方和表示,不能的话就返回3.

这里判断能不能由1或2个整数的平方和表示,就是暴力搜索啦,这种写法蛮简洁的

int a = 0;
while(a*a <= n){
    int b = sqrt(n - a*a);
    if(a*a + b*b == n){
        if(a == 0 || b == 0) return 1;
        else return 2;
    }
    a++;
}

 

以上是关于完全平方数的主要内容,如果未能解决你的问题,请参考以下文章

大等于n的最小完全平方数

c语言程序:编写函数,判断一个正整数是不是为完全平方数,并输出100以内的完全平方数。

蓝桥杯每日一真题—— [蓝桥杯 2021 省 AB2] 完全平方数(数论,质因数分解)

BZOJ_2440_[中山市选2011]完全平方数_容斥原理+线性筛

Python经典练习题1:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

完全平方数