题解 P5150 【生日礼物】

· · 题解

惊了!居然是紫题?!

我的天,怕不是有史以来做到的最简单的紫题,感觉比我这两天疯狂刷的蓝色的单调队列优化DP还有斜率优化简单多了

思路相当简单,就是分解质因数就行了,注意如果没有分解干净的话记着乘3就行了,千万不要线性筛,要不RE,要不MLE,直接暴力就行了,_nsqrt(n)_绝对不会TLE。
看见诸位已经对我的代码虎视眈眈了(瞎猜的),那我就上代码喽~
#include<bits/stdc++.h>
using namespace std;
long long cnt,ans=1;
int main()
{
    long long n;
    scanf("%lld",&n);
    for(int i=2;i<=sqrt(n);i++)
    {
        cnt=0;
        while(!(n%i))
        {
            cnt++;
            n/=i;
        }
        ans*=(cnt<<1|1);
    }
    if(n>1)ans*=3;
    cout<<ans;
    return 0;
}

就这么长,大括号还换行了