zoukankan      html  css  js  c++  java
  • 快速幂

    if(n%2==1)          等价      if(  n&1  )

        位与

    &是位与操作符,n&1,                                       n的最低位是1            1&1 就是 1
    不是将n的二进制形式与00000000 00000001按位做与操作。这时,只要n的最右边一位是1,结果就不是0,为true,条件成立。

    所以这句话实际上就是if(n%2==1)

    #include <iostream>
    using namespace std;

    int f( int a, int b )     //二分求幂(一般)


    {

    int r = 1, base = a;
    while( b != 0 )
    { if( b % 2 )
    r *= base;
    base *= base;
    b /= 2;
    }
    return r;

    }

    int main(int argc, char *argv[])
    {
    int a,n;
    while(cin>>a>>n)
    cout<<f(a,n)<<endl;
    return 0;
    }

    #include <iostream>
    using namespace std;

    int f( int a, int b )                 //快速求幂(位操作)


    {

    int r = 1, base = a;
    while( b != 0 )
    { if( b & 1 )
    r *= base;
    base *= base;
    b >>= 1;

    }
    return r;
    }


    int main(int argc, char *argv[])
    {
    int a,n;
    while(cin>>a>>n)
    cout<<f(a,n)<<endl;
    return 0;
    }


    #include <iostream>
    using namespace std;

    int f( int a, int n )
    {

    if(n==0)            return 1;                                                                  //普通递归
    if(n%2==1)      return a*f(a,n/2)*f(a,n/2);
    else                   return f(a,n/2)*f(a,n/2);

    }

    int main(int argc, char *argv[])
    {
    int a,n;
    while(cin>>a>>n)
    cout<<f(a,n)<<endl;
    return 0;
    }

    #include <iostream>
    using namespace std;

    int f( int a, int n )
    {

                     int t ;                                           // t 保存 以前计算的                            -------记忆式搜索
    if(n==0)             return 1;

        t=f(a,n/2);
    if(n%2==1)     return a*t*t;
    else                  return t*t;

     }

    int main(int argc, char *argv[])
    {
    int a,n;
    while(cin>>a>>n)
    cout<<f(a,n)<<endl;
    return 0;
    }

  • 相关阅读:
    leetcode-409
    leetcode-836
    leetcode-1160
    leetcode-面试题13
    leetcode-695
    go的一些小lib
    leetcode-300
    cookie
    php上传文件
    PHP 文件创建/写入
  • 原文地址:https://www.cnblogs.com/2014acm/p/3905889.html
Copyright © 2011-2022 走看看