zoukankan      html  css  js  c++  java
  • 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;
        }
  • 相关阅读:
    POJ1422 最小路径覆盖
    POJ1422 最小路径覆盖
    POJ1125 Floyd
    POJ1125 Floyd
    POJ2570 二进制,位运算,Floyd
    POJ2570 二进制,位运算,Floyd
    POJ2446 二分匹配
    POJ2536 二分图匹配
    POJ2536 二分图匹配
    POJ3692 最大点权独立集元素个数
  • 原文地址:https://www.cnblogs.com/bernieloveslife/p/9736477.html
Copyright © 2011-2022 走看看