百练:2的幂次方表示

来源:互联网 发布:搜狗壁纸软件 编辑:程序博客网 时间:2024/06/11 20:07
#include <cstdio>#include <iostream>#include <algorithm>using namespace std;void f(int n){if (n == 1){cout << "2(0)";return;}if (n == 2){cout << "2";return;}int num = 1, cnt = 0;while (num <= n){num *= 2;cnt++;}num /= 2;cnt--;if (num == n)//判断能不能直接用2的整数幂表示n{cout << "2(";f(cnt);cout << ")";}else//否则,输出当前2的幂加上一个东西{if (num == 2)//对2这种特殊情况单独考虑{cout << "2";cout << "+";f(n - num);}else{cout << "2(";f(cnt);cout << ")+";f(n - num);}}}int main(){int x;cin >> x;f(x);cout << endl;return 0;}

0 0
原创粉丝点击