完全平方数
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; }
2、c++11编译
g++ -std=c++11 a.cpp
3、方法二:拉格朗日四平方和定理
https://zhuanlan.zhihu.com/p/104030654
以上是关于完全平方数的主要内容,如果未能解决你的问题,请参考以下文章
c语言程序:编写函数,判断一个正整数是不是为完全平方数,并输出100以内的完全平方数。
蓝桥杯每日一真题—— [蓝桥杯 2021 省 AB2] 完全平方数(数论,质因数分解)
BZOJ_2440_[中山市选2011]完全平方数_容斥原理+线性筛