the algorithms to solve the question X^N

本文介绍了三种不同的幂运算算法实现:一种时间复杂度为O(N)的简单迭代算法,两种时间复杂度为O(log(N))的算法,其中包括一个迭代版本和一个递归版本。通过对比不同算法的时间复杂度,展示了如何通过减少乘法操作来提高幂运算效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Algorithm 1:time complexity O(N)

double pow(double x, long n)
{
 if(n==0)
	 return 1; /*when n=0 whatever the x is,the pow is 1*/
 if(n==1)
     return x;   /*when n=1 the result is x itself*/
 else
 {
  double tempa=1.0000;
  while(n--)
	 tempa=tempa*x;
  return (tempa); /*every time make n-- then multiply a xto get the result*/
 }
}
Algorithm 2:time complexity O(log(N))

double pow(double  x, long n)
{
 if(n==0)
				return 1;   /*when n=0 whatever the x is,the pow is 1*/
 if(n==1)
  				return x; /*when n=1 the result is x itself*/
 double temp=1.0;
 while(n)
 {
	if(n%2) temp*=x; /*when n is odd*/
	x*=x;
	n/=2;
 }
 	return temp;
}
Algorithm 3:time complexity O(log(N))

double pow(double x, long n)
{
 if(n==0)
	 return 1;  /*when n=0 whatever the x is,the pow is 1*/
 if(n==1)
     return x;  /*when n=1 the result is x itself*/
 if(n%2==0)
	 return pow(x*x,n/2);  /*when n is an even increase x to x*x and decrease n to n/2*/
 else
     return pow(x*x,n/2)*x; /*when n is an odd increase x to x*x and decrease n to n/2 an then multiply x*/
}

Actually,algorithm 2 is a iterative version of algorithm 3,while algorithm is a recursive version.




acceptable to discuss approaches with other students, but you should not be looking at another student'swork while preparing your own. Question 1 Solve the following Integer Problem using the Branch & Bound algorithm Maximize +2w s.t. +3 w A +2w +10x +4y +6x +4x +3x +5V +7y -2y 68 政 170 w,x,y >= 0 and INTEGERRemember that although the original problem is integer, you are solving linear relaxations at each node ofthe algorithm (each problem you solve is a linear program with continuous variables). You will need multiple branches to solve this problem. If there are two or more fractional variables tobranch on, choose one arbitrarily (your choices might be difierent than a class-mates, and you will geldifferent answers as you go). This problem is tedious to solve to optimality. It is meant to show how inefficient branch and bound carbe, and why we learn about better algorithms. Because of that:If you haven’t found the optimal solution yet, you can stop after solving 10 subproblems Then report your results so far. Do you have a candidate solution? What bounds have you found on the obiective function value of the optimal solution? (do yotknow what z can be at most. and at least?)Which branch(es) do you still need to explore if you haven't found the optimal solution? e Or, if you think you found the optimal solution: Report the optimal solutioneIf you fathomed some branches, explain why you know you don't need to explore furtheiSolve it in Python using Gurobipy. All ofvour variables must be set to GRB.CONTINUOUS. Your scripcan be 'manual': vou can add and remove specific / hardcoded branches without writing code that coulcaccept any input. It is challenging to automate the script, and certainly not expected.
03-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值