P8754 [蓝桥杯 2021 省 AB2] 完全平方数 题解
P8754 [蓝桥杯 2021 省 AB2] 完全平方数
首先,要使
证明:
设
其中
由完全平方数的定义,这个完全平方数
把括号拆开,得到
可以看到,每个质因子的指数均为
所以,可以得到这样一个思路:
对
最后是完整代码:
#include <bits/stdc++.h>
using namespace std;
long long n,ans=1;
int main()
{
scanf("%lld",&n);
for(long long i=2;i*i<=n;i++)
{
int cnt=0; //cnt计数,表示质因子pri[i]的指数
while(!(n%i))cnt++,n/=i;
if(cnt%2)ans*=i; //如果指数不是偶数,在x中要有一个这个质因子,保证指数为偶数
}
if(n!=1)ans*=n;//注意n没分尽的情况
printf("%lld",ans);
return 0;
}
AC记录