zoukankan      html  css  js  c++  java
  • luogu 1593 因子和 约数+线性筛

    等比数列那里忘判项数等于 $1$ 的情况了. 

    Code: 

    #include <cstdio>        
    #include <vector>
    #include <algorithm>  
    #define mod 9901   
    #define N 50000002 
    #define ll long long 
    #define setIO(s) freopen(s".in","r",stdin) 
    using namespace std;        
    ll qpow(ll base,ll k) 
    {
        ll tmp=1; 
        for(;k;base=base*base%mod,k>>=1)if(k&1) tmp=tmp*base%mod; 
        return tmp;   
    }
    ll inv(ll k) 
    {
        return qpow(k,mod-2);     
    }
    ll calc(ll a,ll b,ll k) 
    {                                            
        if(b==1) return a;       
        return (qpow(b,k+1)-1+mod)%mod*inv(b-1)%mod;    
    }  
    struct Node 
    { 
        int prime,p; 
        Node(int prime=0,int p=0):prime(prime),p(p){}   
    }; 
    vector<Node>v;   
    int tot;  
    bool vis[N]; 
    int prime[4000000];                  
    void init() 
    {
        int i,j;  
        for(i=2;i<N;++i) 
        { 
            if(!vis[i]) prime[++tot]=i; 
            for(j=1;j<=tot&&i*prime[j]<N;++j) 
            {
                vis[i*prime[j]]=1; 
                if(i%prime[j]==0) break;     
            }
        }    
    }
    int main() 
    {    
        init(); 
        // setIO("input"); 
        int i,j,AA,B,h;  
        scanf("%d%d",&AA,&B),h=AA;        
        for(i=1;i<=tot;++i) 
            if(h%prime[i]==0) 
            {
                int cc=0;  
                for(;h%prime[i]==0;h/=prime[i]) ++cc;   
                v.push_back(Node(prime[i],cc));   
            }  
        ll re=1;                 
        for(i=0;i<v.size();++i) 
        {   
            int p=v[i].p; 
            ll tmp=0,A=1;     
            for(j=1;j<=p;++j) A=A*v[i].prime%mod,tmp=(tmp+A)%mod;            
            tmp=tmp*calc(1,A,B-1)%mod;
            re=re*(tmp+1)%mod;   
        }    
        printf("%lld
    ",re);    
        return 0; 
    }
    

      

  • 相关阅读:
    Linux内存分析
    mysql 分表
    安装YCM
    c/c++ 之静态库
    ubuntu20 宽带连接
    数据对齐
    计算机中浮点数的表示
    整数的表示
    信息的储存
    SparseTable ST表
  • 原文地址:https://www.cnblogs.com/guangheli/p/11491970.html
Copyright © 2011-2022 走看看