|
本帖最后由 diggersun 于 2015-11-1 00:05 编辑
任何一个正整数都可以用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<=20000)输出:符合约定的n的0,2表示(在表示中不能有空格)
- #include<iostream>
- using namespace std;
- void mysearch(int i)
- { int r,s;
- if (i==1) cout<<"2(0)";
- else if (i==2) cout <<'2';
- else if (i>2)
- {
- s=2;
- r=0;
- while (i>=s)
- {
- s=s*2;
- r++;
- }
- cout<<"2(";
- mysearch(r);
- cout<<')';
- s=s/2;
- if (i-s>0)
- {
- cout<<'+';
- mysearch(i-s);
- }
- }
- }
- int main()
- {
- mysearch(100);return 0;
- }
复制代码 |
|