zoukankan      html  css  js  c++  java
  • hdu 2837 Calculation

    公式:a^b%p=a^(b%phi(p)+phi(p))%p   b>=phi(p)

     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<algorithm>
     4 #include<iomanip>
     5 #include<cmath>
     6 #include<string>
     7 #include<vector>
     8 #define ll __int64
     9 using namespace std;
    10 ll euler(int n)
    11 {
    12     ll ans=1;
    13     for(int i=2;i*i<=n;i++)
    14     {
    15         if(n%i==0)
    16         {
    17             ans*=i-1;
    18             n/=i;
    19             while(n%i==0)
    20             {
    21                 ans*=i;
    22                 n/=i;
    23             }
    24         }
    25     }
    26     if(n>1) ans*=n-1;
    27     return ans;
    28 }
    29 ll pows(ll a,ll b,ll m)
    30 {
    31     ll ans=1;
    32     while(b)
    33     {
    34         if(b&1) ans=(ans*a)%m;
    35         b>>=1;
    36         a=(a*a)%m;
    37     }
    38     return ans%m;
    39 }
    40 ll cmp(int a,int b,int m)
    41 {
    42     ll ans=1;
    43     for(int i=1;i<=b;i++)
    44     {
    45         ans*=a;
    46         if(ans>=m) return ans;
    47     }
    48     return ans;
    49 }
    50 ll fun(int n,int m)
    51 {
    52     ll phi=euler(m);
    53     if(n<10) return n;
    54     ll a=fun(n/10,phi);
    55     ll b=cmp(n%10,a,m);
    56     if(b>=m) 
    57     {
    58         ll ans=pows(n%10,a+phi,m);
    59         if(ans==0)
    60             ans+=m;
    61         return ans;
    62     }
    63     return b;
    64 }
    65 int main()
    66 {
    67     int t,i,j,m,n;
    68     cin>>t;
    69     while(t--)
    70     {
    71         cin>>n>>m;
    72         ll ans=fun(n,m)%m;
    73         printf("%I64d
    ",ans);
    74     }
    75     return 0;
    76 }
    View Code
  • 相关阅读:
    maven打包
    &#40;和&#41;后台解析
    beetl简单阅览
    snmp在win10上安装使用
    javaMail发送邮件
    mysql 安装配置详解
    vsftpd的主配置文件详解
    linux下vi命令笔记
    linux下sed命令笔记
    linux下grep命令笔记
  • 原文地址:https://www.cnblogs.com/xin-hua/p/3207057.html
Copyright © 2011-2022 走看看