P8754 [蓝桥杯 2021 省 AB2] 完全平方数
sunxiaofan · · 个人记录
这个题太简单了以至于没有题解,那我来水一篇。
题意
题意很简单,就是给定一个n,求一个x,使得
解题思路
30分思路
从1开始枚举x,然后判断
代码略
100分思路
假设
那已知n,如何寻找x呢?从上面可以看出来,只要把n中所有的平方数全部除掉,就可以得到x。也就是,从2开始枚举i,如果
#include<bits/stdc++.h>
using namespace std;
long long a,n;
int main()
{
scanf("%lld",&n);
for(long long i=2;i*i<=n;i++)
{
while(n%(i*i)==0)n/=(i*i);
}
printf("%lld",n);
}
注意,循环中的i一定要是long long 类型的,因为过程中存在