快速幂

Posted on 2011-07-22 23:48  continue_n  阅读(217)  评论(0)    收藏  举报

二分法求幂:

比如2的9次方可以看成 ((2的4次方)的平方)*2 ;

     2的8次方可以看成 ((2的4次方)的平方);

依此类推……

#include <stdio.h>
/*int fun(int a,int n)
{
 if( n == 1 ) return a;
 int temp = (a*a) % 10000;
 if( n&1 ) return (fun(temp,n/2)*a) % 10000;
 else return (fun(temp,n/2)) % 10000;
}*/
/*int fun(int a,int n)
{
 int s;
 s = 1;
 while(n)
 {
  if( n & 1 ) s = (s * a) % 10000;
  n >>= 1;
  a = (a * a) % 10000;
 }
 return s;
}*/
/*int n,m,temp;
void fun2(int m)
{
 if( m == 1 ) temp = n;
 else
 {
  fun3(m/2);
  if(m&1) temp = temp*temp*n;
  else temp = temp*temp;
 }
}
*/
int main()
{
 int n,m;
 while(scanf("%d%d",&n,&m)!=EOF)
 {
  //temp = 0 ;
  printf("%d\n",fun(n,m));
  //fun2(m);
  //printf("%d\n",temp);
 }
 return 0;
}

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3