洛谷P1010幂次方
来源:互联网 发布:求五轴磨床编程软件 编辑:程序博客网 时间:2024/06/05 11:23
任何一个正整数都可以用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(2(2)+2(0))+2+2(0)
输入输出格式
输入格式:一个正整数n(n≤20000)。
符合约定的n的0,2表示(在表示中不能有空格)
输入输出样例
1315
2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
题解:从题目得知,137=2^7+2^3+2^0=128+8+1;
128=2^7=2^(2^2+2^1+2^0);
8=2^3=2^(2^1+2^0);
1=2^0;
137=2^(2^2+2^1+2^0)+2^(2^1+2^0)+2^0;
所以只要找到一个比2大的数进行分解,最后输出。
pascal code
var n:longint;proceduref(x:longint);var a:array[0..20] of longint; //存放二进制下的状态(用于分解)i,l:longint; first:boolean;beginl:=-1; //从2^0开始计算while x>0do//十进制转二进制begininc(l);a[l]:=x mod2;x:=x div2;end;first:=true;for i:=l downto 0doif a[i]=1 then //当二进制的那一位为一,处理一次beginif first then first:=false //处理一次elsewrite('+'); //已经处理了一次,第二次还要加。if i=0thenwrite('2(0)') //2^0的情况elseif i=1thenwrite(2) //2^1的情况else beginwrite('2(');f(i); //递归write(')');end;end;end;beginreadln(n);f(n); //递归end.
c++ code
#include
- 洛谷 P1010 幂次方
- 洛谷 P1010 幂次方
- 洛谷 P1010 幂次方
- 洛谷 P1010 幂次方
- 洛谷P1010 幂次方
- 洛谷P1010幂次方
- |洛谷|分治|P1010 幂次方
- 【分治】 洛谷 P1010 幂次方
- 洛谷——P1010 幂次方
- P1010 幂次方
- P1010 幂次方
- P1010 幂次方 luogu
- P1010 幂次方
- P1010 幂次方
- P1010 幂次方
- 【P1010-幂次方】解题记录
- NOIp1998PJ/Luogu P1010 幂次方 解题报告
- p1010
- 分治——地毯覆盖
- hdu 6121 Build a tree
- ZigBee TI ZStack CC2530 3.11 IO口02-外部中断
- proxychins+ssh使用socks5代理
- ubuntu下文件压缩/解压缩命令
- 洛谷P1010幂次方
- 数据结构与算法_斐波那契数列的递归与非递归
- android复杂动画实现途径
- 利用ssh传输文件
- spring依赖注入
- python与matlab爬虫百度图片首页的图片(urllib.request)
- ZigBee TI ZStack CC2530 3.2 官方例程00-总
- android 将byte[]保存到手机
- Gym 101086 A, L ,G,H ,F 题解