任何一个正整数都可以用2的幂次方表示。例如:137=27+23+20同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为:2(7)+2(3)+2(0)

news/2024/11/29 14:51:36/

题目描述

任何一个正整数都可以用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))+2+2(0)

#include<iostream>using namespace std;void judge( int n ) //返回最大项是2的多少次幂 
{//结尾可能是2或者1 若为2 直接输出2 若为1 直接输出2(0) 且最后不需要任何符号 if(n==1){cout<<2<<"("<<0<<")";}else if(n==2){cout<<2;}//若直接n已经为零了 就不需要再进行任何输出直接返回 else if(n==0){return ;}else{int i,j;for(i=1;i<=14;i++){ //i为2的多少次幂 int sum = 2;for(j=2;j<=i;j++){sum*=2;}if((n-sum)>=0&&(n-sum)<sum){n=n-sum; //n的值 可能为0 //若为2次幂可直接输出 因为零次幂已经在上面输出了 if(i==2){cout<<2<<"("<<i<<")";//如果n不为0 即后面还有项 要输出加号 if(n!=0) cout<<"+";}else if(i == 1){cout<<2;//和上面一样 如果n不为0 即后面还有项 要输出加号 if(n!=0)cout<<"+";}	else{cout<<2<<"(";judge(i); //将i也输出成上面的模样 小到2时结束 cout<<")";//和上面一样 如果n不为0 即后面还有项 要输出加号 if(n!=0)cout<<"+";} judge(n);}}}
}int main()
{int a;scanf("%d",&a);judge(a);return 0;
}

 


http://www.ppmy.cn/news/500609.html

相关文章

如何判断一个数是否为2的幂次方

最近在OJ上做题&#xff0c;遇到一道题&#xff0c;其中一个细节就是需要判断一个数是否为2的幂次方。初看似乎很简单&#xff0c;可我想来想去&#xff0c;竟然无甚好办法。最后我用一个笨办法解决了&#xff0c;那就是将2 4 8 16 32… …存到一个数组里&#xff0c;遍历一遍数…

2的幂次方C++

&#xff08;一&#xff09;干货 (1)审题 任何一个正整数都可以用2的幂次方表示.。 例如:1372^72^32^0同时约定次方用括号来表示,即a^b可表示为a(b)。 由此可知,137可表示为:2(7)2(3)2(0) 进一步:72^222^0 (2^1用2表示) 322^0 所以最后137可表为:2(2(2)22(0))2(22(0))2(0) …

一个数是2的幂次方

关键字: 2 power 幂 一个数是2的幂次方&#xff0c;那么这个数的二进制位数中&#xff0c;只能有一位数值为1. 例如&#xff1a;10000&#xff0c; 100&#xff0c; 1等等。 从中可以看到&#xff0c;如果把这个数减去1&#xff0c;那么结果值的2进制位应该如下&#xff1a;11…

2的17次方java中表示什么_2的17次方是多少

2的17次方是多少 设原式为A&#xff0c;再套一层&#xff0c;根号(2AA)&#xff0c;A2&#xff0c;因为无限。 追问 好简单粗暴!!!!更难理解了 只看懂了”设原式为A“ 再套一层是啥&#xff1f; 怎么就突然”根号(2AA)“了呢 哭瞎!!!! 追答 哪里简单粗暴了&#xff1f;无限嘛&a…

任何一个正整数都可以用2的幂次方表示

例如&#xff1a;1372^72^32^0&#xff0c;约定a^b可表示为a&#xff08;b&#xff09;&#xff0c;则137可表示为&#xff1a;2&#xff08;7&#xff09;2&#xff08;3&#xff09;2(0),进一步72^222^0,322^0。所以137最终可以表示为2&#xff08;2&#xff08;2&#xff09…

8758_2的幂次方表示

/*Name: 8758_2的幂次方表示Copyright: Author: Date: 18-01-18 11:10Description: 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 任何一个正整数都可以用2的幂次方表示。例如&#xff1a;137272320 同时约定方次用括号来表示&#xff0c;即ab可表示为a(b)…

1的1次方+2的2次方+3的3次方+...+n的n次方

&#xff08;此处n最大取160哦&#xff0c;能力有限大整数的表示还没学会&#xff0c;以后学会了还会继续更的哦&#xff09; public class Test {public static void main(String[] args) {new Test().test1();}public void test1(){//求前n项n的n次幂的和;Scanner input ne…

计算一个数是2的几次幂

给定一个数n,快速计算n是2的几次幂 #include <iostream> #include <cmath>using namespace std;/*** 非递归 -- 判断一个数是2的几次幂* param n 给定的数 */ int log(int n) {int count 0;if(n 1)return 0;while(n > 1){n n>>1; //右移 -> 除以2…