分解质因数
将n的质因数分解,质因数的指数是否为偶数,若不是偶数,答案乘以该质因数,最后返回答案。
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
const int N = 1e5 + 10;
typedef long long ll;
ll chk(ll x){
ll ans = 1;
for(ll i = 2; i <= x/i; i++){
if(x % i == 0){
int s = 0;
while(x % i == 0){
x /= i;
s++;
}
if(s % 2 == 1) ans = (1ll) * ans * i;
}
}
if(x > 1) ans = (1ll) * ans * x;
return ans;
}
int main(){
ll n,x;
scanf("%lld",&n);
//double n2 = sqrt(n);有bug..189在本地能输出21,在acwing上输出1
// if((1ll) * n2 * n2 == n){
// puts("1");
cout << "1" << endl;
// }
// else{
printf("%lld\n",chk(n));
// cout << chk(n);
// }
return 0;
}