藍橋杯 2的次冪表示
阿新 • • 發佈:2019-01-28
一遍遞迴一遍輸出
#include <iostream> using namespace std; string Binary(int n){ string s=""; while(n){ s+=('0'+n%2); n/=2; } return s; } void output(int x){ string s=Binary(x); int n=s.size(); int last=0; while(s[last]=='0'){ last++; } for(int i=n-1;i>=last;i--){ if (s[i]=='1') { if (i==0) { cout<<"2(0)"; }else if (i==1) { cout<<2; if (i!=last){ cout<<"+"; } }else{ cout<<"2("; output(i); cout<<")"; if (i!=last){ cout<<"+"; } } } } } int main(){ int n;cin>>n; output(n); return 0; }