2的冪次方
阿新 • • 發佈:2021-02-05
【題目】:
每個正數都可以用指數表示表格。用於例如,137=2^7+2^3+2^0。我們用 a(b) 的形式表示a^b,然後用2(7)+2(3)+2(0)表示137。由於7=2^2+2+2^0和3=2+2^0,
137最終由2(2(2)+2+2(0))+2(2+2(0))+2(0)表示。給定一個正數n,你的任務是用只包含數字0和2的指數形式表示n。
示例1
輸入
1315
輸出
2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
程式碼:
#include<iostream> #include<cstdio> #include<cstring> using namespace std; string changefrom(int n)//把數字變成二進位制 { string str=""; while(n!=0) { str.insert(0,1,n%2+'0'); n/=2; } return str; } int shuchu(int n) { string s; int num=0; s=changefrom(n); for(int i=0;i<s.size();i++)//用num記錄'1'的個數 { if(s[i]=='1') num++; } if(n==2||n==0||n==1) { if(n!=1) cout<<n; } else{ int m=0; for(int i=0;i<s.size();i++) { if(s[i]=='1') { m++; cout<<"2"; if(s.size()-1-i!=1) cout<<'('; shuchu(s.size()-1-i);//shuchu(s.size()-1-i); if(s.size()-1-i!=1) cout<<')'; if(m!=num) cout<<"+"; } } } return 0; } int main() { int n; while(cin>>n) { shuchu(n); cout<<endl; } return 0; }