http://ac.jobdu.com/problem.php?pid=1095 2的幂次方
//手动模拟
#include<iostream>
#include<string>
#include<cstdio>
using namespace std;
int main(void)
{
int j,n,flag,m;
int binary[15]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384};
string str[20001];
str[1]="2(0)";
str[2]="2";
for(n=3;n<20001;n++)
{
flag=0,m=n;
for(j=14;j>=0;j--)
{
if(binary[j]>n)
continue;
else if(binary[j]==n)
{
str[n]+="2(";
str[n]+=str[j];
str[n]+=")";
break;
}
else
{
if(m>=binary[j])
{
m-=binary[j];
if(flag)
str[n]+="+";
str[n]+=str[binary[j]];
flag=1;
}
}
}
}
while(scanf("%d",&n)!&#