⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 模取幂运算(计算a^b mod n).cpp

📁 acm中各种代码
💻 CPP
字号:
 #include<stdio.h>
 /*********************************************   
    
   返回x的二进制长度   
    
   *********************************************/   
   int    BitLength(int    x)   
   {   
   int    d    =    0;   
   while    (x    >    0)    {   
   x    >>=    1;   
   d++;   
   }   
   return    d;   
   }   
    
   /*********************************************   
    
   返回x的二进制表示中从低到高的第i位   
   ,最低位为第一位   
    
   *********************************************/   
    
   int    BitAt(int    x,    int    i)   
   {   
   return    (    x    &    (1    <<    (i-1))    );   
   }   
    
   /*********************************************   
    
                   模取幂运算    计算a^b    mod    n   
    
   *********************************************/   

 int    Modular_Expoent(int    a,int    b,int    n)   
   {   
    
           int    i,    y=1;   
           for    (i    =    BitLength(b);    i    >    0;    i--)   
           {     
                     y    =    (y*y)%n;   
                     if    (BitAt(b,i)    >    0)     
     y    =    (y*a)%n;   
           }   
         return    y;   
    
   } 

int main()
{
    int a,b,n;
    while(scanf("%d %d %d",&a,&b,&n) != EOF)
    printf("%d\n",Modular_Expoent(a,b,n));    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -