https://www.luogu.com.cn/problem/P8754?contestId=333384#ide
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
#define ll long long
ll a[N];
void solve(){
ll n;cin>>n;
ll x=1;
for(ll i=2;ii<=n;i++){
int cnt=0;//统计数量
while(n%i==0){
cnt++;
n/=i;
}
if(cnt%2){
x=i;//补充一个
}
}
if(n!=1){
x*=n;
}
cout<<x<<endl;
}
int main(){
int t=1;
// cin>>t;
while(t--){
solve();
}
}
https://www.luogu.com.cn/problem/B4398?contestId=333384
//2 2
//8 2
//3 3
//18 2
//84 37
//拆解为奇数因子乘积的形式(且只保留一个即可)
#include<bits/stdc++.h>
using namespace std;
const int N=1e7+10;
//3e7 --->256MB
#define ll int
// pair<int,int>;
int a[N];
ll run(ll x){
ll res=1;//拆解结果
for(ll i=2;ii<=x;i++){
ll cnt=0;//统计数量
while(x%i==0){
x/=i;
cnt++;
}
if(cnt%2)res*=i;
}
return res*x;//得到最终的素数拆解(只保留奇数且单个素数)
}
void solve(){
// map<ll,ll>mp;//数组
//map<下标,值> 平衡树 //离散化--->
int n;cin>>n;
for(int i=1;i<=n;i++){
int x;cin>>x;
a[run(x)];
// mp[run(x)];
// cout<<x<<' '<<run(x)<<endl;
}
int mx=0;
}
int main(){
int t=1;
// cin>>t;
while(t--){
solve();
}
}
https://www.luogu.com.cn/problem/P1414?contestId=333384#ide
//直接计算每个数的因子贡献
//30 1 2 3 5 6 10 15 30
//12 1 2 3 4 6 12
//25 1 5 25
//
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
#define ll long long
int a[N];
map<int,int>mp;
//9 ;1 3 9
void run(int x){
for(int i=1;i*i<=x;i++){
if(x%i==0){
mp[i];//左边
if(x/i!=i){//特判中间
mp[x/i];//右边
}
}
}
}
void solve(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
int x;cin>>x;
run(x);
}
}
int main(){
int t=1;
// cin>>t;
while(t--){
solve();
}
}