zoukankan      html  css  js  c++  java
  • 5845: A^B的约数和(因子和与因子个数

    p为质数 a为正整数,那么p^a的因子和就是:

    p^a的因子数就是a+1;

     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    那么对于一个正整数n有素因子分解:

    因子和就是:

    n的因子数有:

    例题:tzoj 5845 求A^B的因子和

    把A分解 即把A看成上面的n 因子和就是上面①处

    还有个B次方 so B乘到a1那里 即:

    注意要求逆元 因为除数会过大 会损精度(质数逆元就是质数-2,除一个数就是乘这个数的逆元)

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    #define mod 9901
    #define ll long long
    ll poww(ll a, ll b) {
        ll ans = 1, base = a;
        while (b)
        {
            if (b & 1 != 0) ans = base*ans%mod;
            base = base*base%mod;
             b >>= 1;
        }
        return ans%mod;
    }
    ll a,b;
    ll f(ll n)
    {
        ll t=sqrt(n+0.5),ans=1;
        int i;
        ll a,tmp;
        for(i=2;i<=t;i++)
        {
            if(n%i==0)
            {
                a=0;
                while(n%i==0)n/=i,a++;
                tmp=poww(i,a*b+1);
                ans=(ans*(tmp-1)%mod)*poww((i-1),mod-2)%mod;
            }
        }
        if(n>1)
        {
            tmp=poww(n,b+1);
            ans=(ans*(tmp-1)%mod)*poww((n-1),mod-2)%mod;
        }
        return ans%mod;
    }
    int main()
    {
        cin>>a>>b;
        ll y=f(a);
        cout<<y<<endl;
        return 0;
    }
    View Code
  • 相关阅读:
    hash表及带注释插头dp
    NOIP模拟测试9「随·单·题」
    静态点分治总结
    NOIP模拟测试8「匹配·回家」
    NOIP模拟测试8「寿司」
    「PKUWC2018」Slay the Spire
    矩阵快速幂总结
    SQL中的object_id函数
    SQL数据库Replace的用法
    SQL批量提交修改业务
  • 原文地址:https://www.cnblogs.com/ydw--/p/11368164.html
Copyright © 2011-2022 走看看