P1010幂次方
#include <stdio.h>
#include <iostream>
using namespace std;
int main ( )
{
int n, m, i, j, k, flag;
int map[ 100 ] = { 0 } ;
cin>> n;
m = n;
i = 1 ;
while ( m > 0 )
{
map[ i] = m % 2 ;
i ++ ;
m / = 2 ;
}
i -- ;
flag = i;
int sign = 0 ;
while ( i)
{
if ( map[ i] == 1 )
{
if ( sign)
cout<< "+" ;
switch ( i- 1 )
{
case 0 : cout<< "2(0)" ; break ;
case 1 : cout<< "2" ; break ;
case 2 : cout<< "2(2)" ; break ;
case 3 : cout<< "2(2+2(0))" ; break ;
case 4 : cout<< "2(2(2))" ; break ;
case 5 : cout<< "2(2(2)+2(0))" ; break ;
case 6 : cout<< "2(2(2)+2)" ; break ;
case 7 : cout<< "2(2(2)+2+2(0))" ; break ;
case 8 : cout<< "2(2(2+2(0)))" ; break ;
case 9 : cout<< "2(2(2+2(0))+2(0))" ; break ;
case 10 : cout<< "2(2(2+2(0))+2)" ; break ;
case 11 : cout<< "2(2(2+2(0))+2+2(0))" ; break ;
case 12 : cout<< "2(2(2+2(0))+2(2)))" ; break ;
case 13 : cout<< "2(2(2+2(0))+2(2)+2(0))" ; break ;
case 14 : cout<< "2(2(2+2(0))+2(2)+2)" ; break ;
case 15 : cout<< "2(2(2+2(0))+2(2)+2+2(0))" ; break ;
}
}
sign = 1 ;
i -- ;
}
cout<< endl;
return 0 ;
}