zoukankan      html  css  js  c++  java
  • poj 1845 POJ 1845 Sumdiv 数学模板

    筛选法+求一个整数的分解+快速模幂运算+递归求计算1+p+p^2+````+p^n
    POJ 1845 Sumdiv
    求A^B的所有约数之和%9901

    */
    #include<stdio.h>
    #include<math.h>
    #include<iostream>
    #include<algorithm>
    #include<string.h>
    using namespace std;
    #define MOD 9901
    const int MAXN=10000;
    int prime[MAXN+1];
    void Prime()//筛选法
    {
    memset(prime,0,sizeof(prime));
    for(int i=2;i<=MAXN;i++)
    {
    if(!prime[i])
    prime[++prime[0]]=i;
    for(int j=1;j<=prime[0]&&prime[j]<=MAXN/i;j++)
    {
    prime[prime[j]*i]=1;
    if(i%prime[j]==0)
    break;
    }
    }
    }
    long long factor[100][2];//factor[i][0]存的是因子,factor[i][1]存的是次数
    int cnt;//记录不同因子的个数
    int getFactors(long long x)
    {
    cnt=0;
    long long tmp=x;
    for(int i=1;prime[i]<=tmp/prime[i];i++)
    {
    factor[cnt][1]=0;
    if(tmp%prime[i]==0)
    {
    factor[cnt][0]=prime[i];
    while(tmp%prime[i]==0)
    {
    factor[cnt][1]++;
    tmp/=prime[i];
    }
    cnt++;
    }
    }
    if(tmp!=1)
    {
    factor[cnt][0]=tmp;
    factor[cnt++][1]=1;
    }
    return cnt;
    }
    long long pow_m(long long a,long long n)//快速模幂运算
    {
    long long res=1;
    long long tmp=a%MOD;
    while(n)
    {
    if(n&1){res*=tmp;res%=MOD;}
    n>>=1;
    tmp*=tmp;
    tmp%=MOD;
    }
    return res;
    }
    long long sum(long long p,long long n)//计算1+p+p^2+````+p^n
    {
    if(p==0)
    return 0;
    if(n==0)
    return 1;
    if(n&1)//奇数
    {
    return ((1+pow_m(p,n/2+1))%MOD*sum(p,n/2)%MOD)%MOD;
    }
    else return ((1+pow_m(p,n/2+1))%MOD*sum(p,n/2-1)+pow_m(p,n/2)%MOD)%MOD;

    }
    int main()
    {
    int A,B;
    Prime();
    while(scanf("%d%d",&A,&B)!=EOF)
    {
    getFactors(A);
    long long ans=1;
    for(int i=0;i<cnt;i++)
    {
    ans*=(sum(factor[i][0],B*factor[i][1])%MOD);
    ans%=MOD;
    }
    printf("%I64d ",ans);
    }
    return 0;
    }

  • 相关阅读:
    什么是被 GC Roots 直接引用的对象?
    什么情况下JVM内存中的一个对象会被垃圾回收?
    图解GC流程
    图解JVM内存区域划分
    图解JVM类加载机制和双亲委派模型
    Nginx 是怎么工作的?
    ThreadLocal 线程本地存储
    centos7 配置阿里镜像
    C# 类库项目 无法创建 “资源字典” 文件
    linux 启动jar包 指定yml配置文件和输入日志文件
  • 原文地址:https://www.cnblogs.com/PJQOOO/p/4252056.html
Copyright © 2011-2022 走看看