首页 > 代码库 > 九度OJ 1095 2的幂次方

九度OJ 1095 2的幂次方

题目1095:2的幂次方

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:772

解决:525

题目描述:

    Every positive number can be presented by the exponential form.For example, 137 = 2^7 + 2^3 + 2^0。

    Let‘s present a^b by the form a(b).Then 137 is presented by 2(7)+2(3)+2(0). Since 7 = 2^2 + 2 + 2^0 and 3 = 2 + 2^0 , 137 is finally presented by 2(2(2)+2 +2(0))+2(2+2(0))+2(0). 
 
    Given a positive number n,your task is to present n with the exponential form which only contains the digits 0 and 2.

输入:

    For each case, the input file contains a positive integer n (n<=20000).

输出:

    For each case, you should output the exponential form of n an a single line.Note that,there should not be any additional white spaces in the line.

样例输入:
1315
样例输出:
2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)
#include<stdio.h>
#include<math.h>
void solve(int n)
{
    int cnt=0;
    while(pow(2,cnt)<=n)
        cnt++;
    cnt--;
    if(cnt==0)
        printf("2(0)");
    else if(cnt==1)
        printf("2");
    else
    {
        printf("2(");
        solve(cnt);
        printf(")");
    }
    int num_r=n-pow(2,cnt);
    if(num_r)
    {
        printf("+");
        solve(num_r);
    }
}
int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        solve(n);
        printf("\n");
    }
    return 0;
}
 
/**************************************************************
    Problem: 1095
    User: kirchhoff
    Language: C
    Result: Accepted
    Time:0 ms
    Memory:1004 kb
****************************************************************/



九度OJ 1095 2的幂次方