80分求解
查看原帖
80分求解
1109270
x1007楼主2024/4/10 16:44
#include<stdio.h>
 
int main(void)
{
    int k[15] = {0};
    int n, i;
    int num = 0;
    scanf("%d", &n);
    for(i = 0; n != 1; i++)
    {
        if(k[i] = n % 2)
            num++;
        n /= 2;
    }
    k[i] = 1;
    for(int j = i; j >= 0; j--)
    {
        switch(j)
        {
            case 0:
                if(k[j])
                    printf("2(0)");
                break;
            case 1:
                if(k[j])printf("2");
                break;
            case 2:
                if(k[j])
                    printf("2(2)");
                break;
            case 3:
                if(k[j])
                    printf("2(2+2(0))");
                break;
            case 4:
                if(k[j])
                    printf("2(2(2))");
                break;
            case 5:
                if(k[j])
                    printf("2(2(2)+2(0))");
                break;
            case 6:
                if(k[j])
                    printf("2(2(2)+2)");
                break;
            case 7:
                if(k[j])
                    printf("2(2(2)+2+2(0))");
                break;
            case 8:
                if(k[j])
                    printf("2(2(2+2(0)))");
                break;
            case 9:
                if(k[j])
                    printf("2(2(2+2(0))+2(0))");
                break;
            case 10:
                if(k[j])
                    printf("2(2(2+2(0))+2)");
                break;
            case 11:
                if(k[j])
                    printf("2(2(2+2(0))+2+2(0))");
                break;
            case 12:
                if(k[j])
                    printf("2(2(2+2(0))+2(2))");
            case 13:
                if(k[j])
                    printf("2(2(2+2(0))+2(2)+2(0))");
                break;
            case 14:
                if(k[j])
                    printf("2(2+2(0))+2(2)+2");
                break;
        }
        if(k[j] && num != 0)
        {
            printf("+");
            num--;
        }
    }
    
    return 0;
}

求解,最后一个测试点不对。

2024/4/10 16:44
加载中...