题解:SP8057 AMR10C - Square Free Factorization

· · 题解

题目大意:题目是让我们分解质因数,然后需要求出分解完以 后最大的一个指数。

做题思路:我们要求出指数,只要一一枚举,如果可以除就 while 循环,只要他可以被 i 给整除的话,就除去 i 并且将指数数量加 1。

最后循环结束的时候我们来判断一下是不是大于当前最大的值,大于就将他替换掉就可以了。

中间我们还要加上一个特判。

代码如下:

#include<bits/stdc++.h>
#define int long long 
using namespace std;

signed main(){
    int T,x;
    cin>>T;
    while(T--){
        cin>>x;
        int ans=0,maxx=-1e9;
        for(int i=2;i<=x/i;++i){
            while(x%i==0)ans++,x/=i;
            maxx=max(maxx,ans);
        }
        if(x!=1)maxx=max(maxx,1LL);
        cout<<maxx<<"\n";
    }
    return 0;
}