YTU.3130: 진급 귀속의 2의 멱차방 표시

2010 단어

3130: 진급 귀속의 2의 멱차방 표시


Time Limit: 1 Sec  
Memory Limit: 64 MB
Submit: 17  
Solved: 15
[ Submit][ Status][ Web Board]

Description


어떤 정수든지 2의 멱차방으로 표시할 수 있다.예:
    137=27+23+20
동시에 약정 측은 괄호로 표시한다. 즉, ab는 a(b)로 표시할 수 있다.여기서 알 수 있듯이 137은 다음과 같습니다.
    2(7)+2(3)+2(0)
추가: 7=22+2+20(21은 2로 표시)
        3=2+20
그래서 마지막 137은 다음과 같다.
    2(2(2)+2+2(0))+2(2+2(0))+2(0)
또한:
    1315=210+28+25+2+1
그래서 1315는 마지막으로 2(2(2(2+2(0)+2)+2(2+2(0))+2(2(2+2(0)))+2(2)+2(0))+2(0)로 표시할 수 있다.

Input


정수 n (n≤20000)

Output


한 줄, 약정에 부합되는 n의 0, 2는 (표시에 공백이 있을 수 없음) 을 나타낸다.

Sample Input

137

Sample Output

2(2(2)+2+2(0))+2(2+2(0))+2(0)

HINT


귀속 수출 조건을 고려하고 2의 구성 부분을 고려하면 몇 가지로 나눌 수 있는가!

AC 코드:

#include
int num;
void fun(int n)
{
    int i = 0;
    int sum = 1;
    if(n == 0)
        return ;
    if(n == 1)
    {
        printf("2(0)");    // 1 2 
        return ;
    }
    if(n == 2)
    {
        printf("2");      // 2 
        return ;
    }
    while(2*sum <= n)
    {
        i ++;
        sum = 2*sum;
    }
    printf("2");
    if(i != 1)
    {
        printf("(");
        fun(i);
        printf(")");
    }
    if(n - sum != 0)
        printf("+");
    fun(n - sum);
}
int main()
{
    int n;
    num = 0;
    scanf("%d",&n);
    if(n == 0)
    {
        printf("%d",n);
        return 0;
    }
    fun(n);
    return 0;

}

좋은 웹페이지 즐겨찾기