【题目描述】
一个数如果是另一个整数的完全平方,那么我们就称这个数为完全平方数(Pefect Sqaure),也称平方数。小A认为所有的平方数都是很perfect的~
于是他给了小B一个任务:用任意个不大于n的不同的正整数相乘得到完全平方数,并且小A希望这个平方数越大越好。请你帮助小B告诉小A满足题意的最大的完全平方数。
【题目简述】
在1-n中选出一些数使其相乘为一个平方数。
Solution:
- 首先想到可以质因数分解(根据质因数分解定理,每一个数都可以分解成几个质数相乘的形式),然后我将1-n都进行质因数分解,都分解完毕后扫描每个质数出现的次数,由于我要的是一个平方数,所以这个质数只能对答案贡献偶数次,然后素数筛加质数分解加各种cnt写的非常恶心最后T到了85分(数据良心)。
- 正解:首先我们考虑,一个数既然不是质数那么他肯定可以被一个质数整除,那么我们就可以反过来考虑我们对每一个质数只需要求[1,n]中有多少个它的整数倍既可以得到cnt数组然后偶数个对答案有贡献,那么怎么求[1,n]有多少质数p的个数呢