洛谷p1010 幂次方
题目:
这道题其实就是一个简单的进制转换问题,分析一下可能出现的各种情况即可这里需要注意的就是数字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 幂次方相关推荐
- 洛谷 p1010 幂次方 python实现
洛谷 p1010 幂次方 python实现 描述 任何一个正整数都可以用2的幂次方表示.例如 137= 2 7 + 2 3 + 2 0 2^7+2^3+2^0 27+23+20 同时约定方次用括号来表 ...
- 洛谷P1010 幂次方(递归算法)
题目描述 任何一个正整数都可以用 22 的幂次方表示.例如 137=2^7+2^3+2^0137=27+23+20. 同时约定方次用括号来表示,即 a^bab 可表示为 a(b)a(b). 由此可知, ...
- 洛谷 p1010 幂次方
#include <cstdio> #include <cmath> using namespace std; void dg(int n) {int a;if(n==0) r ...
- 洛谷-P1010 幂次方
题目描述 任何一个正整数都可以用 22 的幂次方表示.例如 137=2^7+2^3+2^0137=27+23+20. 同时约定方次用括号来表示,即 a^bab 可表示为 a(b)a(b). 由此可知, ...
- 洛谷 | P1010 幂次方
注: pow(n,m)在cmath库中,返回n^m C 库函数 - pow() #include<iostream> #include<cmath> using namespa ...
- 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 ...
- 信息学奥赛一本通 1208:2的幂次方表示 | OpenJudge 2.2 8758:2的幂次方表示 | 洛谷 P1010 [NOIP1998 普及组] 幂次方
[题目链接] ybt 1208:2的幂次方表示 OpenJudge 2.2 8758:2的幂次方表示 洛谷 P1010 [NOIP1998 普及组] 幂次方 [题目考点] 1. 递归 [解题思路] 递 ...
- 递归——幂次方(洛谷 P1010)
题目选自洛谷P1010 我们知道,二进制数表示的其实就是一个正整数分解成为2的幂次方和! 如3用二进制表示为 11 ,从右到左分别是第0位,第1位-- 则3=2^1+2^0(只要二进制那位是一,就是2 ...
- 洛谷P1010(幂次方)
洛谷P1010(幂次方) 题目描述 输入格式 输出格式 解题思路 代码 题目描述 任何一个正整数都可以用 2 的幂次方表示.例如 137=27+23+20137=2^7+2^3+2^0137=27+2 ...
最新文章
- 关注Cortex-M处理器,M0、M3、M4简单对比
- sql between包括两端吗_简单查询-SQL
- 光伏电站清扫机器人_光伏智能清扫机器人
- C指针原理(21)-C指针基础-ATT汇编
- 微软自带输入法如何关闭桌面右下角「拼」图标
- LeetCode MySQL 1174. 即时食物配送 II
- Pytest参数选项在脚本中和命令行用法详解
- java jdbc sql 参数_java – Postgresql JDBC表值参数
- 《梦断代码》读后感2
- emacs org-mode 常用命令
- python3 linux
- 工训物流小车视觉开源代码,包含二维码、条形码、物块、标识靶识别
- Android Studio 安装TinyPng插件
- Spark2.1.1中用各种模式运行计算圆周率的官方Demo
- Mac环境安装Win虚拟机
- Unable to create tempDir. java.io.tmpdir is set to C:\Users\ADMINI~1\AppData
- uniapp 动态设置导航栏标题 副标题 背景图片 web-view
- 原来等待我做的事情还有很多
- CCR炒币机器人:币圈新手炒币可以用什么方法操作?
- 苹果cms v10影视网站安装海螺主题模板
热门文章
- 三星苹果诺基亚齐推廉价智能机 抢食中印市场
- jperf linux运行,iperf for Linux 的安装与使用
- 批处理禁用、启用USB设备如此简单
- 易车、毛豆新车、蛋蛋订车买车到底靠谱吗?
- MATLAB学习笔记1:MATLAB概述
- Winform绘画工具类Graphics
- 适用于Apple Watch的Game Boy模拟器,RPG Maker进入Linux,以及更多游戏新闻
- Angular5实现组件缓存(RouteReuseStrategy)类似vue中的keep-alive的效果
- win7字体放大不放大窗口_放大不确定的未来
- 3D打印机不工作连接不上的原因.解决方法一例