完全平方数
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++; }
以上是关于完全平方数的主要内容,如果未能解决你的问题,请参考以下文章
c语言程序:编写函数,判断一个正整数是不是为完全平方数,并输出100以内的完全平方数。
蓝桥杯每日一真题—— [蓝桥杯 2021 省 AB2] 完全平方数(数论,质因数分解)
BZOJ_2440_[中山市选2011]完全平方数_容斥原理+线性筛