c++2的幂次方

c++2的幂次方?

题目描述

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

同时约定用括号来表示方次,即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

的次幂降次排列。

输入

正整数n(n<=20000)

输出

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

样例输入

137

样例输出

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

代码解释

#include <bits/stdc++.h>
#include <stdio.h>
using namespace std;
int n;
int a[17];
void work(int x)
{
    if (x == 0)
    {
        printf("0");
        return ;
    }
    if (x == 2)
    {
        printf("2");
        return ;
    }
/*          x等于0或者2的时候就不可以拆分,直接返回原值       */
    while (1)
    {
        int i;
        for (i=16;a[i]>x;i--);//重点    找出小于x的最大2次幂
        if (a[i] != 2)
        {
            printf("2(");
            work (i);//递归    继续拆分
            printf(")");
        }
        else
        {
            printf("2");
        }
        if (x - a[i]) printf("+"),x = x - a[i];//拆分完大的部分后仍有剩余,继续拆分小的部分
        else return ;//拆分完就退出
    }
}
int main()
{
    a[0] = 1;
    for (int i = 1;i <= 16;i ++) a[i] = a[i - 1] * 2;
/*                  预处理出2的1-16次幂                                        */
    scanf("%d",&n);
    work (n);
}

原文地址:https://www.cnblogs.com/LJA001162/p/11013096.html

时间: 2024-08-29 18:44:36

c++2的幂次方的相关文章

快速判断一个数是否是4的幂次方,若是,并判断出来是多少次方!

将4的幂次方写成2进制形式后,很容易发现有个特点,2进制中只有1个1(1在奇数位置),并且后面跟了偶数个0:因此问题可以转化为判断1后面是否跟了偶数个0就可以了. 4的整数次幂的二进制可以写为2^(2*n),即也可以写成2的幂次方,当然就满足2的幂次方的条件,即num&(num-1)==0. 思路:首先用条件num&(num-1)==0来判断是否为2的幂次方,若不满足,则不是.若满足,再用条件num&0x5555 5555 来判断,若为真,则这个整数是4 的幂次方.否则不是. #i

【日常学习】【搜索/递归】codevs2802 二的幂次方题解

转载请注明出处 [ametake版权全部]http://blog.csdn.net/ametake欢迎来看 题目描写叙述 Description 不论什么一个正整数都能够用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) 又如:1

解题报告——2018级2016第二学期第四周作业 (2的幂次方)

解题报告——2018级2016第二学期第四周作业 题目: 描述 任何一个正整数都可以用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))+

递归好题,NOIP1998幂次方

先占坑提醒自己写这篇文章.回家再补,机房时间宝贵. 洛谷1010 幂次方 本题地址:http://www.luogu.org/problem/show?pid=1010 题目描述 任何一个正整数都可以用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的幂次方(power)

2的幂次方(power) 题目描述 任何一个正整数都可以用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

洛谷OJ P1010 幂次方 解题报告

洛谷OJ P1010 幂次方 解题报告 by MedalPluS 题目描述   任何一个正整数都可以用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   (21用2表示)        3=2+20   所以最后137可表示为:        2(2(2)+2+2(0))+2(2+2(0))+2(0)又如

九度OJ 1095 2的幂次方

题目1095:2的幂次方 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:772 解决:525 题目描述: Every positive number can be presented by the exponential form.For example, 137 = 2^7 + 2^3 + 2^0. Let's present a^b by the form a(b).Then 137 is presented by 2(7)+2(3)+2(0). Since 7 = 2^2 +

[Wikioi 2808][NOIP 1998普及组]二的幂次方---HBNU的童鞋过来看看

转载请说明出处:http://blog.csdn.net/cywosp/article/details/27095723 <黑天鹅--如何应对不可预知的未来> 作者:纳西姆?尼古拉斯?塔勒布 关于黑天鹅 在发现澳大利亚黑天鹅之前,所有欧洲人都确信天鹅全部都是白色的,人们在经过上百万次的确定性观察白天鹅之后得到了这一结论,而且一直延续了上千年,直到黑天鹅的出现,从而将这一结论完全打破.通过黑白天鹅的现象说明我们通过观察或经验获得的知识具有严重的局限性和脆弱性,仅仅一次的完全不同的发现就足以颠覆根

洛谷 P1010 幂次方 Label:模拟

题目描述 任何一个正整数都可以用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) 又如: 1315=2^10 +2^8 +2^5 +2+1 所以1315最后可表示为: 2(2(2+2(0))+2)+2(2(2+2(0)))+2

递归--练习9--noi8758 2的幂次方表示

递归--练习9--noi8758 2的幂次方表示 一.心得 找准子问题就好 二.题目 8758:2的幂次方表示 总时间限制:  1000ms 内存限制:  65536kB 描述 任何一个正整数都可以用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)