求幂函数代码比较

常规求幂

1 int pow1(int a,int b)
2 {
3     int r=1;
4     while(b--)
5         r*=a;
6     return r;
7 } 

二分求幂(一般)

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

二分求幂(位操作,同pow2)

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

快速求幂(位运算,更复杂)

int pow3(int x,int n)
{
    if(n==0) return 1;
    else
    {
        while((n&1)==0)
        {
            n>>=1;
            x*=x;
        }
    }
    int result=x;
    n>>=1;
    while(n!=0)
    {
        x*=x;
    if((n&1)!=0)
        result*=x;
    n>>=1;
    }
    return result;
}
时间: 2024-08-09 02:06:46

求幂函数代码比较的相关文章

非递归版求幂函数

#include<stdio.h> int MinSubsequenceSum(const int A[],int n) { int i,sum,MinSum; sum=MinSum=0; for(i=0;i<n;i++) { sum+=A[i]; if(sum<MinSum) MinSum=sum; if(sum>0) sum=0; } return MinSum; } void main() { int arr[10]={3,4,-2,5,-4,6,-2,8,-9,-23

C语言求闰年代码

#include<stdio.h> int main() { int year; year=1900; while(year<=2000) { if(year%400==0||year%4==0&&year%100!=0) { printf("%d是闰年\n",year); year++; } else year++; } return 0; }

当点击“上一张”和“下一张”按钮时,图片框里的图片按顺序更换下一张,点一次更换一次。 还求一个代码,当点击按钮或图片时随机更换成其它图片。

<style> #d1{width:200;height:200;border:1 gray solid} </style> <body> <div id=d1></div> <input type=button id=bn1 value=change> <span id=s1></span> <script language="JavaScript"> <!-- a=[

求数组中出现一次的数字

一个数组中只有一个数字出现一次,其余别的数字都出现两次,如何求出这个出现一次的数字?例如数组a[11]={1,2,2,3,3,4,4,5,5,6,6},则出现一次的是1,通过异或算法即可求出. 代码如下: int onediffent(int a[],int n) { int temp=0; for(int i=0;i<n;i++) temp=temp^a[i]; printf("%d\n",temp); } 补充:任何数与零异或等于任何数.任何数与自己相异或为0: 假如问题变成

POJ 2540 半平面交求可行区域面积

Hotter Colder Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2343   Accepted: 981 Description The children's game Hotter Colder is played as follows. Player A leaves the room while player B hides an object somewhere in the room. Player

计算机科学及编程导论(7)数组及可变性、字典、伪代码,代码运行效率简介

1. 数组及可变性 当创建一个数组的时候,它将与一个对象进行绑定 L1 = [1, 2, 3] L2 = L1 L1[0] = 4 print(L2)#=>[4, 2, 3] L2 = L1 意味着L2与L1指向同一个对象,而L1[0]=4则改变了对象的值,所以最终L2的值也会改变,可以与下面这个例子进行比较 a = 1 #a指向对象1 b = a #b指向对象a a = 4 #此时a指向了对象4 print(b) #=>1,由于b依旧指向对象1,所以没有发生变化 2.字典 字典包括了以下几个

求重叠区间个数,某书某题错例分析

大意就是我淘钱买了一本题集,觉得书中有些地方作者太随意,例子错得不严谨,一度阻碍阅读.作为消费者不得不拿出来说一说.本文本着不迷信,实事求是精神.本文编排如下:1.引用书中原例2.主观分析例子有错3.代码运行验证其错4.修正例子代码5.另一个求值代码现在开始. 下面是书中原例引用: 求重叠区间个数 给定多个可能重叠的区间,找出重叠区间的个数.区间定义如下: class Interval { int start; // 起点 int end; // 止点 Interval(int a, intb)

12种排序算法:原理、图解、动画视频演示、代码以及笔试面试题目中的应用

出处:http://blog.csdn.net/han_xiaoyang/article/details/12163251. 声明:版权所有,转载请注明出处,谢谢. 0.前言 从这一部分开始直接切入我们计算机互联网笔试面试中的重头戏算法了,初始的想法是找一条主线,比如数据结构或者解题思路方法,将博主见过做过整理过的算法题逐个分析一遍(博主当年自己学算法就是用这种比较笨的刷题学的,囧),不过又想了想,算法这东西,博主自己学的过程中一直深感,基础还是非常重要的,很多难题是基础类数据结构和题目的思想综

PHP实现 bitmap 位图排序 求交集

2014年12月16日 17:15:09 初始化一串全为0的二进制; 现有一串无序的整数数组; 如果整数x在这个整数数组当中,就将二进制串的第x位置为1; 然后顺序读取这个二进制串,并将为1的位转换成整数,顺序存放到新的集合中,就是排好序的了 排序代码: 1 function sort() 2 { 3 // var_dump(PHP_INT_MAX, PHP_INT_SIZE); 4 // int 9223372036854775807 5 // int 8 6 $bitmap = array_