• 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
  • 相关阅读:
    BoundsChecker下载
    大型系统内部资源定位的途径
    架构的焦点
    为什么日志只应该有三个级别
    回收站引发ORACLE查询表空间使用缓慢
    题目记录
    广搜入门 待改进的广搜
    归并排序的使用
    大数数组中滚动数组的应用
    多重背包问题
  • 原文地址:https://www.cnblogs.com/ydw--/p/11368164.html
Copyright © 2020-2023  润新知