题目:
这道题其实就是一个简单的进制转换问题,分析一下可能出现的各种情况即可这里需要注意的就是数字2输出的就是2,而很多算法可能会输出2(2(0))也就是2^1,处理细节到1,2还有3即可,直接上代码:

#include<stdio.h>
#include<math.h>
void search(int x)//简单的递归
{int i=0,m;
if(x==1){//分析0,1,3可能会出现的情况printf("2(0)");
}else if(x==2){printf("2");
}else if(x==3){//这里判定三其实可以删除掉,不过这样判定就少了一次筛选过程search(2);printf("+");search(1);
}else{printf("2(");while(x>=pow(2,i)){i++;}i--;if(x==pow(2,i)){search(i);printf(")");//每一个式子都要记住反括号}else {search(i);printf(")+");//输出加号search(x-pow(2,i));}
}
}
int main()
{int n;
scanf("%d",&n);
search(n);
return 0;
}

高中就写过一遍,那时候算法好像不是这样的,就翻了一下书,结果想到位运算会简单很多,不过下面的代码是一位大佬写的(加了一些注释,大佬确实厉害),用到c++的string类型,要不然会更麻烦一点:

#include<bits/stdc++.h>
using namespace std;
string run(int x,int i=0,string s=string("")){if(x==0)return string("0");do if(x&1)s=(i==1?"2":"2("+run(i)+")")+(s==""?"":"+")+s;//拼接字符串,应题意,要把低次方接在后面//三位运算符简化操作while(++i,x=x>>1);//移位操作return s;
}
int main(){int x;cin>>x;cout<<run(x)<<endl;
}

洛谷p1010 幂次方相关推荐

  1. 洛谷 p1010 幂次方 python实现

    洛谷 p1010 幂次方 python实现 描述 任何一个正整数都可以用2的幂次方表示.例如 137= 2 7 + 2 3 + 2 0 2^7+2^3+2^0 27+23+20 同时约定方次用括号来表 ...

  2. 洛谷P1010 幂次方(递归算法)

    题目描述 任何一个正整数都可以用 22 的幂次方表示.例如 137=2^7+2^3+2^0137=27+23+20. 同时约定方次用括号来表示,即 a^bab 可表示为 a(b)a(b). 由此可知, ...

  3. 洛谷 p1010 幂次方

    #include <cstdio> #include <cmath> using namespace std; void dg(int n) {int a;if(n==0) r ...

  4. 洛谷-P1010 幂次方

    题目描述 任何一个正整数都可以用 22 的幂次方表示.例如 137=2^7+2^3+2^0137=27+23+20. 同时约定方次用括号来表示,即 a^bab 可表示为 a(b)a(b). 由此可知, ...

  5. 洛谷 | P1010 幂次方

    注: pow(n,m)在cmath库中,返回n^m C 库函数 - pow() #include<iostream> #include<cmath> using namespa ...

  6. Java实现 洛谷 P1010 幂次方

    输入输出样例 输入 #1 1315 输出 #1 2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0) import java.util.Scanner;pub ...

  7. 信息学奥赛一本通 1208:2的幂次方表示 | OpenJudge 2.2 8758:2的幂次方表示 | 洛谷 P1010 [NOIP1998 普及组] 幂次方

    [题目链接] ybt 1208:2的幂次方表示 OpenJudge 2.2 8758:2的幂次方表示 洛谷 P1010 [NOIP1998 普及组] 幂次方 [题目考点] 1. 递归 [解题思路] 递 ...

  8. 递归——幂次方(洛谷 P1010)

    题目选自洛谷P1010 我们知道,二进制数表示的其实就是一个正整数分解成为2的幂次方和! 如3用二进制表示为 11 ,从右到左分别是第0位,第1位-- 则3=2^1+2^0(只要二进制那位是一,就是2 ...

  9. 洛谷P1010(幂次方)

    洛谷P1010(幂次方) 题目描述 输入格式 输出格式 解题思路 代码 题目描述 任何一个正整数都可以用 2 的幂次方表示.例如 137=27+23+20137=2^7+2^3+2^0137=27+2 ...

最新文章

  1. 关注Cortex-M处理器,M0、M3、M4简单对比
  2. sql between包括两端吗_简单查询-SQL
  3. 光伏电站清扫机器人_光伏智能清扫机器人
  4. C指针原理(21)-C指针基础-ATT汇编
  5. 微软自带输入法如何关闭桌面右下角「拼」图标
  6. LeetCode MySQL 1174. 即时食物配送 II
  7. Pytest参数选项在脚本中和命令行用法详解
  8. java jdbc sql 参数_java – Postgresql JDBC表值参数
  9. 《梦断代码》读后感2
  10. emacs org-mode 常用命令
  11. python3 linux
  12. 工训物流小车视觉开源代码,包含二维码、条形码、物块、标识靶识别
  13. Android Studio 安装TinyPng插件
  14. Spark2.1.1中用各种模式运行计算圆周率的官方Demo
  15. Mac环境安装Win虚拟机
  16. Unable to create tempDir. java.io.tmpdir is set to C:\Users\ADMINI~1\AppData
  17. uniapp 动态设置导航栏标题 副标题 背景图片 web-view
  18. 原来等待我做的事情还有很多
  19. CCR炒币机器人:币圈新手炒币可以用什么方法操作?
  20. 苹果cms v10影视网站安装海螺主题模板

热门文章

  1. 三星苹果诺基亚齐推廉价智能机 抢食中印市场
  2. jperf linux运行,iperf for Linux 的安装与使用
  3. 批处理禁用、启用USB设备如此简单
  4. 易车、毛豆新车、蛋蛋订车买车到底靠谱吗?
  5. MATLAB学习笔记1:MATLAB概述
  6. Winform绘画工具类Graphics
  7. 适用于Apple Watch的Game Boy模拟器,RPG Maker进入Linux,以及更多游戏新闻
  8. Angular5实现组件缓存(RouteReuseStrategy)类似vue中的keep-alive的效果
  9. win7字体放大不放大窗口_放大不确定的未来
  10. 3D打印机不工作连接不上的原因.解决方法一例