-蓝桥杯-算法训练 2的次幂表示
算法训练 2的次幂表示
时间限制:1.0s
内存限制:512.0MB
任何一个正整数都可以用2进制表示,例如:137的2进制表示为。
将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^3+2^0
现在约定幂次用括号来表示,即a^b表示为a(b)
此时,137可表示为:2(7)+2(3)+2(0)
进一步:7=2^2+2+2^0 (2^1用2表示)
3=2+2^0
所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0)
又如:+2^8+2^5+2+1
所以1315最后可表示为:
2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
输入格式
正整数(1<=n<=20000)
输出格式
符合约定的n的0,2表示(在表示中不能有空格)
2(2(2)+2+2(0))+2(2+2(0))+2(0)
2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
用递归实现会比较简单,可以一边递归一边输出
用递归来实现。将十进制数转换成二进制,记录转换过程中为1的是第几次循环,然后再判断。递归的边界就是当n==0,n==1n==2的时候。
但是应该注意的是,要判断什么时候输出+号,什么时候不输出。当不是最后一个的时候就输出 +
定义数组的时候要定义为局部变量,因为每一次数组存储的都不同。
int main()
void cimi(int n);
while(scanf("%d",&n)!=EOF)
printf("\n");
void cimi(int n)
int i,j,k;
int a[32];//数组定义为局部变量
a[num++]=i;//存储第几次是1
for(i=num-1;i>=0;i--)
if(a[i]==0)
printf("2(0)");
else if(a[i]==1)
printf("2");
else if(a[i]==2)
printf("2(2)");
else if(a[i]>2)
printf("2(");
cimi(a[i]);
printf(")");
printf("+");//如果不是最后一个就得输出 +怎样用C++ 编写 小数的小数次幂?_百度知道
怎样用C++ 编写 小数的小数次幂?
如 1.23的3.01次方?
1.23^3.01如何编写?
我有更好的答案
pow是支持的pow(1.23,3.01);
采纳率:26%
用数学math取ln就得到3.01*ln(1.23)可以精确到几位由你控制。只给你提供一个方法,自己写更有印象。呵呵
#include &iostream&#include &cmath&int main(){double base=1.23,n=3.01;cout&&&1.23^3.01=&&&pow(base,n)&&return 0;}
为您推荐:
其他类似问题
您可能关注的内容
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。求教!用蝶形算法求快速傅里叶变换,如果输入的点数不是2的整数次幂该怎么处理 - C++当前位置:& &&&求教!用蝶形算法求快速傅里叶变换,如果输入的点数求教!用蝶形算法求快速傅里叶变换,如果输入的点数不是2的整数次幂该怎么处理www.MyException.Cn&&网友分享于:&&浏览:0次求教!用蝶形算法求快速傅里叶变换,如果输入的点数不是2的整数次幂该怎么办?比如,我对两个5X5的矩阵求卷积,用FFT转换可以降低计算的复杂度,但是49不是2的整数次幂,这样的话该怎样进行傅里叶变换?谢谢大家------解决思路----------------------补0。。。。。------解决思路----------------------引用:补0。。。。。
扩充矩阵的方式实现
不过如果是用在图像处理中,那么补零外还有其他扩充方法,比如外插法------解决思路----------------------想法子将它变成2的幂,各种各样的扩充方法
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有C++里面计算一个数的幂的函数是什么_百度知道
C++里面计算一个数的幂的函数是什么
我有更好的答案
pow();原型:在TC2.0中原型为extern float pow(float x, float y); ,而在VC6.0中原型为double pow( double x, double y ); 头文件:math.h 功能:计算x的y次幂。 返回值:x应大于零,返回幂指数的结果。 返回类型:double型,int,float会给与警告! 举例1:(在VC6.0中运行通过) #include &math.h& #include &stdio.h& int main(void) { double x = 2.0, y = 3.0; printf(&%lf raised to %lf is %lf\n&, x, y, pow(x, y)); return 0; }
采纳率:55%
指数、返回值都是double型的。如计算 9 的3/4次方:y = pow ( 9.0 , 3/4 )在math.h里面定义的pow()函数。调用方法为pow(底数,指数);
#include&math.h&pow(float x,float b)即表示x的b次方.
为您推荐:
其他类似问题
您可能关注的内容
函数的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。c++ 幂函数怎么表示_百度知道
c++ 幂函数怎么表示
我有更好的答案
怎么感觉是吧pow
函数原型:double pow( double x, double y ) 头文件:math.h 功能。 返回值:x应大于零,返回幂指数的结果。 返回类型:计算x的y次幂
采纳率:73%
pow(x,y);计算x的y次方
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}