题目描述

任何一个正整数都可以用 22 的幂次方表示。例如 137=2^7+2^3+2^0137=27+23+20。

同时约定方次用括号来表示,即 a^bab 可表示为 a(b)a(b)。

由此可知,137137 可表示为 2(7)+2(3)+2(0)2(7)+2(3)+2(0)

进一步:

7= 2^2+2+2^07=22+2+20 ( 2^121 用 22 表示),并且 3=2+2^03=2+20。

所以最后 137137 可表示为 2(2(2)+2+2(0))+2(2+2(0))+2(0)2(2(2)+2+2(0))+2(2+2(0))+2(0)。

又如 1315=2^{10} +2^8 +2^5 +2+11315=210+28+25+2+1

所以 13151315 最后可表示为 2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)。

输入格式

一行一个正整数 nn。

输出格式

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

输入输出样例

输入 #1复制

1315

输出 #1复制

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

说明/提示

对于 100\%100% 的数据,1\le n\le 2\times 10^41≤n≤2×104。

分析:

这题没什么难的,就是考察递归,处理好细节就行

对于输入的数n,先把n拆分成2(n1)+2(n2)+2(n3)+....的形式,然后再去拆分n1,n2,拆分n1,n2的时候调用的函数就是拆分n的函数,在这里完成了递归,我的代码里是通过devide函数来完成的,还有个函数firstnum是求n1,n2.....的,处理好1和2的表示方法就可以了

上AC代码:

#include<iostream>
#include<math.h>
using namespace std;
int n;
string devide(int k);
int firstnum(int k);
int main()
{cin>>n;string s;//s=devide(n);//for(int i=1;i<=s.size()-1;i++)//cout<<s[i];cout<<devide(n);return 0;
}
string devide(int k)
{string s;if(k==1)return "2(0)";if(k==2)return "2";while(k>1){int big=firstnum(k);//cout<<"big is "<<big<<endl;if(big==0)s+="2(0)";else if(big==1)s+="2";elses+="2("+devide(big)+")";int temp=pow(2,big);//cout<<"temp is "<<temp<<endl;k=k-temp;if(k>1)s+="+";}if(k==1)s+="+2(0)";return s;}
int firstnum(int k)
{int ans=0;if(k==1)return 0;while(k>1){ans++;k=k/2;}return ans;
}

洛谷-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 幂次方

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

  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. 百万奖金悬赏AI垃圾分类,就问你来不来?
  2. mybatis入门(六)----高级映射(一对一,一对多,多对多)
  3. GDCM:获取假冒的Identify File的测试程序
  4. 【阿里妈妈营销科学系列】第二篇:消费者行为分析
  5. 尼古拉斯 android_圣尼古拉斯和Alexa的访问
  6. ASP.NET 2.0中将 GridView 导出到 Excel 文件中 (转)
  7. 单片机c语言期末考试题(a)的答案,单片机C语言期末考试题(A).doc
  8. mysql event同步数据库_mysql 数据库Event定时任务使用详解(Navicat 及直接SQL语句创建)...
  9. 成考期末计算机组成原理,2020年10月自考02318计算机组成原理真题及答案
  10. 小议C++中函数的参数的传递
  11. 火影忍者服务器维护时间,火影手游12月12日更新:仙鸣增加破霸体,小自来也变蛙时间减半!...
  12. NO.128 开发团队篇:参加项目计划会议,分解任务,领取任务,每天更新任务。...
  13. ADO.NET 对象模型
  14. 离散数学1 命题逻辑-基本的概念
  15. 用文氏图表示映射满射单射及函数的关系
  16. 如何破解私域留存?四大核心环节拆解锁客关键能力
  17. 【Spring】SpringBoot 配置 log4j2 日志
  18. javascript 中 parentNode,childNodes、children 应用
  19. 观看 B站视频-Mysql-随堂笔记
  20. Xcode中的隐藏宝藏:模拟器里如何快速预览动态字体显示效果

热门文章

  1. Fortran 编译提示 Error:This USE statement is not positioned correctly within the scoping unit.
  2. 【论文理解】DQN:Playing Atari with Deep Reinforcement Learning
  3. ELK之elasticsearch导致CPU居高不下系统慢解决办法
  4. Qt之实现360安全卫士主界面(四)
  5. 为什么说给大企业打工是一场难以善终的结局?
  6. 300W 、300W-LP、300W-3d-face数据集
  7. 实变函数与泛函分析(一)集合论
  8. RCE(远程命令执行)绕过总结
  9. iphone 快捷 自定义_通过此快捷方式在iPhone上快速键入数字和符号
  10. 【CCF】信息学竞赛系列活动简介