完全平方数

Posted bailuoxi

tags:

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

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

https://leetcode-cn.com/explore/learn/card/queue-stack/217/queue-and-bfs/874/

 

技术图片

 

 



1、c++

技术图片
#include "iostream"
#include <queue>
#include <unordered_set>
using namespace std;

class Solution{
        public:
                Solution() {};
                int numSquare(int n){
                        queue<int> q;
                        q.push(n);

                        unordered_set<int> sset;
                        sset.insert(n);
                        int count = 0;
                        while(!q.empty()){
                                cout<<"count:"<<count<<endl;
                                cout<<"q.size():"<<q.size()<<endl;
                                int s = q.size();
                                for(int i = 0; i< s; i++){
                                        int tmp = q.front();
                                        cout<<tmp<<endl;
                                        q.pop();
                                        for(int j = 1; j*j <= tmp; j++){
                                                int sub = tmp - j*j;
                                                cout<<"sub:"<<sub<<"  "<<endl;
                                                if(sub == 0) return count+1;
                                                if(sset.find(sub) == sset.end()){
                                                        sset.insert(sub);
                                                        q.push(sub);
                                                }
                                        }
                                }
                                count++;
                        }
                        return count;
                }
};

int main(){
        Solution solu;
        cout<<solu.numSquare(12)<<endl;
}
View Code

2、c++11编译

g++ -std=c++11 a.cpp

 

3、方法二:拉格朗日四平方和定理

https://zhuanlan.zhihu.com/p/104030654

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

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

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

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

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

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

完全平方数