1095.2的幂次方

题目描述:

    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<iostream>
using namespace std;

int a[100]={0};
int binary(int n){
    int size=0;
    do{
        a[size++]=n%2;
        n/=2;
    }while(n!=0);
    return size;
}



int main(){
    int n,size;
    while(cin>>n){
        int first=1;
        size=binary(n);
        if(a[14]==1) {
            if(first==1){
                first=0;
                cout<<"2(2(2+2(0))+2(2)+2)";
            }
            else cout<<"+2(2(2+2(0))+2(2)+2)";
        }
        if(a[13]==1) {
            if(first==1){
                first=0;
                cout<<"2(2(2+2(0))+2(2)+2(0))";
            }
            else cout<<"+2(2(2+2(0))+2(2)+2(0))";
        }
        if(a[12]==1) {
            if(first==1){
                first=0;
                cout<<"2(2(2+2(0))+2(2))";
            }
            else cout<<"+2(2(2+2(0))+2(2))";
        }
        if(a[11]==1) {
            if(first==1){
                first=0;
                cout<<"2(2(2+2(0))+2+2(0))";
            }
            else cout<<"+2(2(2+2(0))+2+2(0))";
        }
        if(a[10]==1) {
            if(first==1){
                first=0;
                cout<<"2(2(2+2(0))+2)";
            }
            else cout<<"+2(2(2+2(0))+2)";
        }
        if(a[9]==1) {
            if(first==1){
                first=0;
                cout<<"2(2(2+2(0))+2(0))";
            }
            else cout<<"+2(2(2+2(0))+2(0))";
        }
        if(a[8]==1) {
            if(first==1){
                first=0;
                cout<<"2(2(2+2(0)))";
            }
            else cout<<"+2(2(2+2(0)))";
        }
        if(a[7]==1) {
            if(first==1){
                first=0;
                cout<<"2(2(2)+2+2(0))";
            }
            else cout<<"+2(2(2)+2+2(0))";
        }
        if(a[6]==1) {
            if(first==1){
                first=0;
                cout<<"2(2(2)+2)";
            }
            else cout<<"+2(2(2)+2)";
        }
        if(a[5]==1) {
            if(first==1){
                first=0;
                cout<<"2(2(2)+2(0))";
            }
            else cout<<"+2(2(2)+2(0))";
        }
        if(a[4]==1) {
            if(first==1){
                first=0;
                cout<<"2(2(2))";
            }
            else cout<<"+2(2(2))";
        }
        if(a[3]==1) {
            if(first==1){
                first=0;
                cout<<"2(2+2(0))";
            }
            else cout<<"+2(2+2(0))";
        }
        if(a[2]==1) {
            if(first==1){
                first=0;
                cout<<"2(2)";
            }
            else cout<<"+2(2)";
        }
        if(a[1]==1) {
            if(first==1){
                first=0;
                cout<<"2";
            }
            else cout<<"+2";
        }
        if(a[0]==1) {
            if(first==1){
                first=0;
                cout<<"2(0)";
            }
            else cout<<"+2(0)";
        }
            cout<<endl;    
         }
         return 0;
    }

 

posted @ 2018-10-02 10:28  bernieloveslife  阅读(312)  评论(0编辑  收藏  举报