【算法】高效计算n的m次方

今天看到了一个非常好的算法,数学什么什么定理我不懂,但这算法值得我学习。

目的:计算n的m次方

int power(int n,int m)

{

  int odd=1;//用来把剩下的数乘进去

  while(p>1){

    if((m & 1) != 0)odd*=n;

    else n*=n;

    p/=2;

  }

  return n*odd;

}

时间: 2024-10-20 21:30:00

【算法】高效计算n的m次方的相关文章

深度学习中得数学,高效计算基础与线性分类器

深度学习说到底就是要调节网络中得权重,使网络的分类结果更接近于训练值.这个重复迭代的过程又是一个线性回归的问题.在这种可能会用到高数,线性代数,概率论中的知识. 一.数学基础提一提. 1.高数中得知识. 高数中最重要的就是微积分了,那在深度学习中出现最多的一个概念就是梯度.什么是梯度呢?要说导数,学过高数的肯定都知道.其实梯度就是当把标量x变成向量X时,对X求导就是梯度.那为什么要用梯度呢?因为梯度等于0在凸函数中往往代表着一个极小值点.我们要求得就是损失函数的极小值,这正是我们需要的.梯度是指

通过例子进阶学习C++(五)计算2的1次方至2的64次方之和

本文是通过例子学习C++的第五篇,通过这个例子可以快速入门c++相关的语法. 1.上篇回顾 在上一篇中,我们通过字符数组计算264次方: 通过例子进阶学习C++(四)计算2的64次方 带着这个问题:为什么用字符数组,不用整数数组,开始本文. 2.先计算1+2+3+...100的和并总结规律 本题目直接实现,有点复杂,我们先计算1+2+3+...100的和,总结规律后再来计算. 这个是一个经典的循环问题,可以用for.while.do-while求和. #include<iostream> us

AC日记——计算2的N次方 openjudge 1.6 12

12:计算2的N次方 总时间限制:  1000ms 内存限制:  65536kB 描述 任意给定一个正整数N(N<=100),计算2的n次方的值. 输入 输入一个正整数N. 输出 输出2的N次方的值. 样例输入 5 样例输出 32 提示 高精度计算 思路: 模拟: 来,上代码: #include<cstdio> using namespace std; int n; char s[101]; int main() { s[0]=1; scanf("%d",&n

Android高效计算——RenderScript(一)

高效计算——RenderScript RenderScript是安卓平台上很受谷歌推荐的一个高效计算平台,它能够自动把计算任务分配到各个可用的计算核心上,包括CPU,GPU以及DSP等,提供十分高效的并行计算能力.可能是由于应用开发时的需求不够,关于RenderScript的相关文章很少,刚好我在工作中应用到此平台,做了一些笔记,因此决定整理成博文分享给大家.内容主要来源于官方文档.StackOverflow以及自己的理解,如有错误,请大家指正.本篇主要介绍RenderScript的基本概念.

六道题 : 1.设计一个函数,用来计算b的n次方 2.(n! = 1*2*3*4*...n) 3.(1! + 2! + 3! + 4! + ... + n!) 4.成绩 5. 数组中的元素逆序存放 6.九九乘法口诀

/* 设计一个函数,用来计算b的n次方 递归的2个条件: 1.函数自己调用自己 2.必须有个明确的返回值 */ #include <stdio.h> int pow2(int b, int n); int main() { int c = pow2(3, 2); printf("%d\n", c); return 0; } /* pow2(b, 0) == 1 pow2(b, 1) == b == pow2(b, 0) * b pow2(b, 2) == b*b == po

计算2的n次方的三种方法(C语言实现)

C代码如下: 1 #include <stdio.h> 2 3 int func1(int n) 4 { 5 return 1<<n; 6 } 7 8 int func2(int n) 9 { 10 11 if(n==0) 12 { 13 return 1; 14 } 15 16 return func2(n-1)*2; 17 } 18 19 int func3(int n) 20 { 21 int c=1, i; 22 for(i=0; i<n; i++) 23 { 24

Spigot 算法之一 计算调和级数的和

 我是首先在[1] 注意到 Spigot-Algorithm的,这个算法发布的相当早,见[2].  [1] 给出几个令人惊异的程序,只用很少的代码就可以计算e,pi,log(2)等常数.其中那个4行代码计算圆周率的程序被网友称作外星人写的程序,但我一直没有勇气去分析和学习它,最近终于决定学习这个 Spigot-Algorithm,先看了文献[3],明白了其基本思想,遂计划尝试编写各种计算常数的代码,并写一个系列博客.从这篇开始,我将讲述如果使用这个算法计算各种常数或者级数的和. 数列a[n]

MD5算法【计算文件和字符串的MD5值】

1. MD5算法是一种散列(hash)算法(摘要算法,指纹算法),不是一种加密算法(易错).任何长度的任意内容都可以用MD5计算出散列值.MD5的前身:MD2.MD3.MD4.介绍工具:CalcMD5.zip.主要作用就是[验明"真身"],字符串文件均可(确保信息传输过程中的完整性.一致性). 2. MD5算法的特点: ????1. 长度固定 ????2. 单向性 ---- 可以通过MD5计算器来计算文件或者字符串的MD5值,但是不可以通过给出的MD5值来推算出文件或者字符串. ???

汇编实验一——利用这3条指令计算2的8次方

安装dosbox 运行 DOSBox 0.74 (noconsole) 实验内容: 将下面3条指令写入2000:0开始的内存单元中,利用这3条指令计算2的8次方. mov ax,1 add ax,ad jmp 2000:3 原文地址:https://www.cnblogs.com/wszme/p/9192992.html