题目来源
2021年蓝桥省赛第二场H题
题目链接:http://acm.mangata.ltd/p/P1165
视频讲解视频连接:https://www.bilibili.com/video/BV1aZ4y1f76j/
思路我们来考虑n的情况
- 当n为质数的时候:我们直接返回当前这个数即可
- 当n不是质数的时候:由于我们之前学过的唯一分解定理(学习链接:https://blog.csdn.net/m0_46201544/article/details/122280910 )可以知道一个合数是会被一种最小质数的积的形式的,那么我们只需要判断在这个过程中每一个质数的数量即可,我们只需要给奇数个质数因子再乘上一个该质数就可以让这个数变成完全平方数,所以我们直接使用唯一分解定理求解就好啦
#include
using namespace std;
#define ll long long
#define mod 1000000009
ll ksm(ll a,ll b) {
ll ans = 1;
for(;b;b>>=1LL) {
if(b & 1) ans = ans * a % mod;
a = a * a % mod;
}
return ans;
}
ll lowbit(ll x){return -x & x;}
const int N = 2e6+10;
ll n;
int main()
{
cin>>n;
ll ans = 1;
for(ll i = 2;i * i
关注
打赏