マシンガイドの2のべき乗次数を再試行


上海交通大学の再試験に合格
137=2(2(2)+2+2(0))+2(2+2(0))+2(0)
#include
 
void put(int num, int n);
 
int main()
{
    int num;
    scanf("%d", &num);
    put(num, 0);
    return 0;
}
 
void put(int m, int n)
//m      ,n      ,r       。
{
    int r;
    if (m == 0)//m      ,  
    {
        return;
    }
    r = m % 2;
    m = m / 2;
    put(m, n + 1);
    if (m != 0 && r != 0)
        //  m  0 r  0        2    ,  +
    {
        printf("+");
    }
    if (r == 1)
    {
        if (n == 0)
        {
            printf("2(0)");
        }
        else if (n == 1)
        {
            printf("2");
        }
        else if (n == 2)
        {
            printf("2(2)");
        }
        else
        {
            printf("2(");
            put(n, 0);
            //       2(0),2,2(2)       
            printf(")");
        }
 
    }
}