FJUT 2343 递归
http://www.fjutacm.com/Problem.jsp?pid=2343
题意:将一个整数拆成二的次方形式,如
137=27+23+20。同时约定次方数用括号来表示,即ab 可表示为a(b)。
由此可知,137可表示为:2^7 + 2^3 + 2^0
2(7)+2(3)+2(0)
进一步:7= 22+2+20 (21用2表示,因为垃圾佬不喜欢“1”)
3=2+20
所以最后137可表示为:
2(2(2)+2+2(0))+2(2+2(0))+2(0)
最后输出这个表示
题解:一眼看去肯定是个递归。 若要分解 X,则需要找到 X所能分解的最大的2的幂方数,最后这个X一定会分解成2(2)或 2或
2(0),所以需要判断 X的二进制形式最高位的1的位置。然后就是一个递归
/*** * .,, .,:;;iiiiiiiii;;:,,. .,, * rGB##HS,.;iirrrrriiiiiiiiiirrrrri;,s&##MAS, * r5s;:r3AH5iiiii;;;;;;;;;;;;;;;;iiirXHGSsiih1, * .;i;;s91;;;;;;::::::::::::;;;;iS5;;;ii: * :rsriii;;r::::::::::::::::::::::;;,;;iiirsi, * .,iri;;::::;;;;;;::,,,,,,,,,,,,,..,,;;;;;;;;iiri,,. * ,9BM&,WA了活该 .,:;;:,,,,,,,,,,,hXA8: T了天命..,,,. * ,;&@@#r:;;;;;::::,,. ,r,,,,,,,,,,iA@@@s,,:::;;;::,,. .;. * :ih1iii;;;;;::::;;;;;;;:,,,,,,,,,,;i55r;;;;;;;;;iiirrrr,.. * .ir;;iiiiiiiiii;;;;::::::,,,,,,,:::::,,:;;;iiiiiiiiiiiiri * iriiiiiiiiiiiiiiii;;;::::::::::::::::;;;iiiiiiiiiiiiiiiir; * ,riii;;;;;;;;;;;;;:::::::::::::::::::::::;;;;;;;;;;;;;;iiir. * iri;;;::::,,,,,,,,,,:::::::::::::::::::::::::,::,,::::;;iir: * .rii;;::::,,,,,,,,,,,,:::::::::::::::::,,,,,,,,,,,,,::::;;iri * ,rii;;;::,,,,,,,,,,,,,:::::::::::,:::::,,,,,,,,,,,,,:::;;;iir. * ,rii;;i::,,,,,,,,,,,,,:::::::::::::::::,,,,,,,,,,,,,,::i;;iir. * ,rii;;r::,,,,,,,,,,,,,:,:::::,:,:::::::,,,,,,,,,,,,,::;r;;iir. * .rii;;rr,:,,,,,,,,,,,,,,:::::::::::::::,,,,,,,,,,,,,:,si;;iri * ;rii;:1i,,,,,,,,,,,,,,,,,,:::::::::,,,,,,,,,,,,,,,:,ss:;iir: * .rii;;;5r,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sh:;;iri * ;rii;:;51,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.:hh:;;iir, * irii;::hSr,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,sSs:;;iir: * irii;;:iSSs:.,,,,,,,,,,,,,,,,,,,,,,,,,,,..:135;:;;iir: * ;rii;;:,r535r:...,,,,,,,,,,,,,,,,,,..,;sS35i,;;iirr: * :rrii;;:,;1S3Shs;:,............,:is533Ss:,;;;iiri, * .;rrii;;;:,;rhS393S55hh11hh5S3393Shr:,:;;;iirr: * .;rriii;;;::,:;is1h555555h1si;:,::;;;iirri:. * .:irrrii;;;;;:::,,,,,,,,:::;;;;iiirrr;, * .:irrrriiiiii;;;;;;;;iiiiiirrrr;,. * .,:;iirrrrrrrrrrrrrrrrri;:. * ..,:::;;;;:::,,. */
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<stdio.h>
#include<string.h>
#include<queue>
#include<cmath>
#include<map>
#include<set>
#include<vector>
using namespace std;
#define inf 0x3f3f3f3f
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define mem(a,b) memset(a,b,sizeof(a));
#define lowbit(x) x&-x;
typedef long long ll;
typedef unsigned long long ull;
const double eps = 1e-6;
const int maxn = 1e5+5;
const int mod = 1e9+7;
inline int read()
{int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
int n;
int f(int m){int ans = 0;int a = 1;while(a < m){ans++;a <<= 1;}if(a>m)return ans-1;elsereturn ans;
}
void print(int x){if(x == 0){//printf("0");return;}int res = f(x);int xx = 1<<res;x -= xx;//cout<<res<<endl;if(x){if(res == 1) printf("2+");else if(res == 0 || res == 2) printf("2(%d)+",res);}else{if(res == 1) printf("2");else if(res == 0 || res == 2) printf("2(%d)",res);}if(res > 2){printf("2(");print(res);if(x)printf(")+");elseprintf(")");}print(x);
}
int main() {while(cin>>n){if(n == 0){printf("0\n");continue;}print(n);printf("\n");}
}
FJUT 2343 递归相关推荐
- 算法设计思想(5)— 递归法
1. 递归概念 递归 Recursion是指在函数的定义中使用函数自身的方法,直观上来看,就是某个函数自己调用自己. 递归有两层含义: 递归问题必须可以分解为若干个规模较小.与原问题形式相同的子问 ...
- 判断某数组是不是二叉树的后序遍历序列 python递归与非递归解法
python 递归 class Solution:def VerifySquenceOfBST(self, sequence):# write code hereif len(sequence) &l ...
- 翻转二叉树 c语言实现 递归 栈 队列
前言 题目比较好理解,就是翻转二叉树 代码 c语言实现 #include<stdio.h> #include<stdlib.h> #include<string.h> ...
- 快速排序的递归和非递归实现 c语言版本
代码 挖坑法 解释 选取一个关键字(key)作为枢轴,一般取整组记录的第一个数/最后一个,这里采用选取序列第一个数为枢轴,也是初始的坑位. 设置两个变量i = l;j = r;其中l = 0, r = ...
- LeetCode 10. Regular Expression Matching python特性、动态规划、递归
前言 本文主要提供三种不同的解法,分别是利用python的特性.动态规划.递归方法解决这个问题 使用python正则属性 import reclass Solution2:# @return a bo ...
- 迭代是人,递归是神(迭代与递归的总结:比较)
https://www.cnblogs.com/Renyi-Fan/p/7708012.html 在计算机编程实现中有常常两种方法:一曰迭代(iterate):二曰递归(recursion). 从&q ...
- java锁(公平锁和非公平锁、可重入锁(又名递归锁)、自旋锁、独占锁(写)/共享锁(读)/互斥锁、读写锁)
前言 本文对Java的一些锁的概念和实现做个整理,涉及:公平锁和非公平锁.可重入锁(又名递归锁).自旋锁.独占锁(写)/共享锁(读)/互斥锁.读写锁 公平锁和非公平锁 概念 公平锁是指多个线程按照申请 ...
- Mysql中的递归层次查询(父子查询,无限极查询)
前言:最近面试的时候遇到公司要求只能用SQL来查询无限极的数据,不能用PHP程序做递归查询,现在分享方法. 下面给出一个function来完成的方法 下面是sql脚本,想要运行的直接赋值粘贴进数据库即 ...
- [递归]一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
这题是用C写的~ 在牛客上半天找不着ACM模式,练习模式里只有核心代码模式 这样用C语言编译器就不能自定义函数啊,不鸡肋吗??? 解决方法:在核心代码模式下用C++编译器(反正C++完全兼容C的不是吗 ...
最新文章
- 实用的bit 位操作
- ubuntu14.04下的NVIDIA Tesla K80显卡驱动的安装教程
- Nginx在开发中常用的基础命令
- 安装MAMP后的控制台访问mysql问题
- 读书印记 - 《创新者的解答》
- 关于概率算法的问题,不知道逻辑错在哪里,求debug
- AD19 add pins to nets错误_为什么我认为Rust的Result错误处理方式不如Exception
- Flask 发布 1.0 稳定版
- 数据库DBeaverEE 22.0.2
- 第11章 支撑向量机 SVM 学习笔记 下 高斯核函数RBF
- windows下yafu的下载及其安装
- 第八章:项目质量管理 - (8.0 项目质量管理是什么)
- 新西兰计算机预科学费,新西兰留学预科学费
- 用PyAV完成视频解码之后,如何完成视频分辨率的转换?
- Android APK瘦身之Android Studio Lint (代码审查)
- 别让抱怨毁了你的工作生活
- 单反相机和镜头 怎么样才可以吧身边的mm拍的很漂亮!!
- 介绍理想工作计算机 英语作文,理想工作的英语作文6篇
- 推动RISC-V拾级而上 赛昉科技发布两款高性能产品: JH7110多媒体处理器与VisionFive 2开发板
- 前端H5实现调用麦克风,录音功能
热门文章
- A-Level经济真题每期一练(54)
- MapReduce设计模式学习
- hdu 2851 Lode Runner
- [名词解释:竞业禁止]
- 仿网易云音乐鲸云音效-孤独星球
- 【Fix Bug】针对 Google Photos 返回的图片Uri,裁剪照片失败
- 三星手机不兼容畅天游诚2无人机软件的解决办法
- python画小猪乔治动画片全集_使用Python海龟画粉红小猪
- 【Codeforces Round #544 (Div. 3) F2. Spanning Tree with One Fixed Degree】DFS
- Java Web 文章管理系统(Jsp+Ajax+JDBC+MySql实现)