蓝桥杯每日一题2023.9.21

3491. 完全平方数 - AcWing题库

题目描述

分析 

完全平方数的一个特点:

所有的质因子的个数为偶数。eg1.9的质因子为3,3的个数为2,得到了9(3*3=9)

                                               eg2.81的质因子为3,3的个数为4,得到81(3*3*3*3=81)

我们将答案乘以不是偶数的质因子,也就是将这个质因子的个数加一变成了偶数,最后这些质因子全部变成偶数,这样它就是一个完全平方数

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;
unordered_map<ll, ll> primes;
ll n;
int main()
{
	cin >> n;
	for(int i = 2; i <= n / i; i ++)
	{
		while(n % i == 0)
		{
			n /= i;
			primes[i] ++;
		}
	}
	if(n > 1)primes[n] ++;
	ll ans = 1;
	for(auto i : primes)
	{
		if(i.second % 2 != 0)ans *= i.first;
	}
	cout << ans;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_75087931/article/details/133135737