题解:CF2205B Simons and Cakes for Success
题目大意
你需要找到最小的正整数
思路
这个代码的思路是:取
比如
这个思路对于
例
AC Code
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e5+10;
int t,v[N],len;
bool vis[N];
void solve(int n){
vis[0]=vis[1]=1;
for(int i=2;i<=n;i++){
if(vis[i]==0){
v[++len]=i;
}
for(int j=1;j<=len && i*v[j]<=n;j++){
vis[i*v[j]]=1;
if(i%v[j]==0){
break;
}
}
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
solve(31623);//具体为什么是31623,见大佬Q_E_D_的题解
cin>>t;
while(t--){
int n;
cin>>n;
int ans=1;
for(int i=1;i<=len;i++){
if(n%v[i]==0){
ans*=v[i];
while(n%v[i]==0){
n/=v[i];
}
}
}
ans*=n;
cout<<ans<<"\n";
}
return 0;
}