10、计算幂方

package jianzhi_offer;

import java.util.Stack;

public class Pow_a {
	//加快了时间效率
	public static long Pow_a(int n,int a){
		//或者与1做位运算,然后对数据进行向右移动,向右移动的时候注意要转换为无符号数,同时注意考略无符号数和有符号的幂是互为倒数的,还有double的判断等于号等细节问题,还有非法输入问题等。
		if(n%2==1){
			if(n==1)
				return a;
			else
				return Pow_a((n-1)/2,a)*Pow_a((n-1)/2,a)*a;
		}else{
			if(n==0)
				return 1;
			else
				return Pow_a(n/2,a)*Pow_a(n/2,a);
		}

	}
	public static void main(String args[]){

		System.out.println(Pow_a(13,2));
	}

}
时间: 2024-10-09 20:33:07

10、计算幂方的相关文章

SICP:对数步数内迭代计算幂的函数

在SICP 32(48)页 根据书中给出的关系 (bn/2)2=(b2)n/2 ,并且使用一个不变量记录中间结果,写出对数步数内迭代计算幂的函数: 方法一(not me): ;;; 16-fast-expt.scm (define (fast-expt b n) (expt-iter b n 1)) (define (expt-iter b n a) (cond ((= n 0) a) ((even? n) (expt-iter (square b) (/ n 2) a)) ((odd? n)

分支-10. 计算个人所得税

1 /* 2 * Main.c 3 * B10-分支-10. 计算个人所得税(10) 4 * Created on: 2014年5月29日 5 * Author: Boomkeeper 6 * 7 * 测试通过 8 */ 9 10 11 #include <stdio.h> 12 #include <stdlib.h> 13 14 int main() 15 { 16 float salary=0; 17 float *ps=&salary; 18 19 scanf(&qu

分支-10. 计算个人所得税(10)

#include<iostream>#include<iomanip>using namespace std;int main(){    float x;    cin>>x;    cout<<setiosflags(ios::fixed)<<setprecision(2);    if(x<=1600)        cout<<0.00<<endl;    else if(x<=2500)      

[ALGO-12] 幂方分解

算法训练 幂方分解 时间限制:1.0s   内存限制:256.0MB 问题描述 任何一个正整数都可以用2的幂次方表示.例如: 137=27+23+20  同时约定方次用括号来表示,即ab 可表示为a(b). 由此可知,137可表示为: 2(7)+2(3)+2(0) 进一步:7= 22+2+20 (21用2表示) 3=2+20  所以最后137可表示为: 2(2(2)+2+2(0))+2(2+2(0))+2(0) 又如: 1315=210 +28 +25 +2+1 所以1315最后可表示为: 2(

计算幂 51Nod 1046 A^B Mod C

给出3个正整数A B C,求A^B Mod C. 例如,3 5 8,3^5 Mod 8 = 3. Input 3个正整数A B C,中间用空格分隔.(1 <= A,B,C <= 10^9) Output 输出计算结果 Input示例 3 5 8 Output示例 3 #include <iostream> #include <stdio.h> using namespace std; long long a,b,c; long long mod(long long a,

java随机输出10计算题

方法1. public static void main(String[] args){ System.out.println("将开始10次加法测试"); Scanner scanner=new Scanner(System.in); int count=0; for(int i=1;i<=10;i++){ int a=(int) (Math.random()*1000)+1; int b=(int) (Math.random()*1000)+1; System.out.pri

算法训练 幂方分解

问题描述 任何一个正整数都可以用2的幂次方表示.例如: 137=27+23+20  同时约定方次用括号来表示,即ab 可表示为a(b). 由此可知,137可表示为: 2(7)+2(3)+2(0) 进一步:7= 22+2+20 (21用2表示) 3=2+20  所以最后137可表示为: 2(2(2)+2+2(0))+2(2+2(0))+2(0) 又如: 1315=210 +28 +25 +2+1 所以1315最后可表示为: 2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(

蓝桥杯—ALGO-12 幂方分解

问题描述 任何一个正整数都可以用2的幂次方表示.例如: 137=27+23+20 同时约定方次用括号来表示,即ab 可表示为a(b). 由此可知,137可表示为: 2(7)+2(3)+2(0) 进一步:7= 22+2+20 (21用2表示) 3=2+20 所以最后137可表示为: 2(2(2)+2+2(0))+2(2+2(0))+2(0) 又如: 1315=210 +28 +25 +2+1 所以1315最后可表示为: 2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0)

7.10 计算中间值

问题:计算一列数字值的中间值(中间值就是一组有序元素中间成员的值).例如,查找DEPTNO 20中工资的中间数. select avg(sal) from (select e.sal from emp e,emp dwhere e.deptno = d.deptno and e.deptno =20group by e.salhaving sum(case when e.sal=d.sal then 1 ehse 0 end) >=abs(sum(sign(e.sal - d.sal))));