解題思路,代碼
任何一個正整數都可以用2的冪次方表示。
同時約定用括號來表示方次,即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)
按
2
的次冪降次排列。
輸入
正整數n(n<=20000)
輸出
用0,2表示符合約定的n(在表格中不能有空格)。
樣例輸入
137
樣例輸出
2(2(2)+2+2(0))+2(2+2(0))+2(0)
代碼解釋
#include<bits/stdc++.h>
using namespace std;
void ss(int n,int sum)//n為被分解的數,sum為二進制位數。
{
if(n==0)
return;//如果n==0,直接回傳。
ss(n/2,sum+1);
if(n%2)
{
if(n/2)
cout<<"+";//如果n≠0,表示這不是第一個2的冪次方,則輸出加號。
if(sum==1)
cout<<"2";
else
{
cout<<"2(";
if(sum==0) cout<<"0";
else ss(sum,0);
cout<<")";
}
}
}//如果n不能用2(0),2,2(2)表示則繼續分解
int main()
{
int a;
cin>>a;
ss(a,0);
cout<<endl;
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/29257.html
標籤:基礎類
上一篇:大佬求教一下-C語言
下一篇:關于哥德巴赫猜想
