【题目描述】
一个整数 a 是一个完全平方数,是指它是某一个整数的平方,即存在一个整数 b,使得 a=b的平方。
给定一个正整数 n,请找到最小的正整数 x,使得它们的乘积是一个完全平方数。
【输入格式】
输入一行包含一个正整数 n。
【输出格式】
输出找到的最小的正整数 x。
【数据范围】
对于 30% 的评测用例,1≤n≤1000,答案不超过 1000。
对于 60% 的评测用例,1≤n≤10的8次方,答案不超过 10的8次方。
对于所有评测用例,1≤n≤10的12次方,答案不超过 10的12次方。
【输入样例1】
12
【输出样例1】
3
【输入样例2】
15
【输出样例2】
15
【代码】
#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;typedef long long LL;int main()
{LL n;cin >> n;LL res = 1;for (LL i = 2; i * i <= n; i ++ )if (n % i == 0){int s = 0;while (n % i == 0) s ++, n /= i;if (s % 2) res *= i;}if (n > 1) res *= n;cout << res << endl;return 0;
}