(luogu1010)幂次方 发表于 2017-10-24 | 分类于 solution , 分治 将一个数拆分成二进制, 对次数递归表示, 特殊处理0和2的情况 代码:12345678910111213141516171819202122232425262728293031#include <iostream>#include <cstdio>using namespace std;void pow2(int n){ if(n==0) printf("%d",n); //特殊处理0 else { for(int i(30);i>=0;--i) //二进制拆分 if(n&(1<<i)) { if(i==1) cout << 2; //特殊处理2 else { printf("2("); pow2(i); cout << ')'; } n -= (1<<i); if(n>0) cout << '+'; } }}int main(){ int n; cin >> n; pow2(n); return 0;}