1208:2的幂次方表示

简介: 1208:2的幂次方表示

1208:2的幂次方表示

时间限制: 1000 ms         内存限制: 65536 KB

【题目描述】

任何一个正整数都可以用2的幂次方表示。例如:137=2^7+2^3+2^0

同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为:

2(7)+2(3)+2(0)

进一步:7=2^2+2+2^0(21用2表示)3=2+2^0

所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0)

又如:1315=2^10+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)

【输入】

一个正整数n(n≤20000)。

【输出】

一行,符合约定的n的0,2表示(在表示中不能有空格)。

【输入样例】

137

【输出样例】

2(2(2)+2+2(0))+2(2+2(0))+2(0)

【来源】

No

1. #include<cstdio>
2. #include<iostream> 
3. #include<cstring>
4. using namespace std;
5. int a[17]={0};
6. int work(int n)
7. {
8.  if(n==2) {printf("2");return 0;}
9.  if(n==0) {printf("0");return 0;}
10.   while(1){
11.     int i;
12.     for(i=16;a[i]>n;i--);
13.     if(a[i]!=2){
14.       printf("2(");
15.       work(i);
16.       printf(")");
17.     }
18.     else printf("2");
19.     if((n-a[i])>0) printf("+"),n-=a[i];
20.     else return 0;
21.   }
22. }
23. int main()
24. {
25.   a[0]=1;
26.   for(int i=1;i<=16;i++) a[i]=a[i-1]*2;
27.   int n;
28.   scanf("%d",&n);
29.   work(n);  
30.   return 0;
31.  }

 

相关文章
|
6月前
|
C++
3 的幂(C++)
3 的幂(C++)
66 0
|
6月前
|
C++
2 的幂(C++)
2 的幂(C++)
51 1
|
6月前
|
C++
4的幂(C++)
4的幂(C++)
43 0
|
存储 C++
求2的N次幂(C++)解决高精度运算
求2的N次幂(C++)解决高精度运算
270 0
|
机器学习/深度学习
1170:计算2的N次方
1170:计算2的N次方
128 0
20:计算2的幂
20:计算2的幂
129 0
076.计算高次方数的尾数
076.计算高次方数的尾数
125 0
|
程序员
2的0次方为什么等于1?
2的0次方为什么等于1?
288 0
|
机器学习/深度学习
20天刷题计划-231. 2 的幂
给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。