POJ 1906

#include <iostream>
#include <string>
#define MAXN 150
using namespace std;

int _m[MAXN];

string p[65] = {
            "1",
            "3",
            "9",
            "27",
            "81",
            "243",
            "729",
            "2187",
            "6561",
            "19683",
            "59049",
            "177147",
            "531441",
            "1594323",
            "4782969",
            "14348907",
            "43046721",
            "129140163",
            "387420489",
            "1162261467",
            "3486784401",
            "10460353203",
            "31381059609",
            "94143178827",
            "282429536481",
            "847288609443",
            "2541865828329",
            "7625597484987",
            "22876792454961",
            "68630377364883",
            "205891132094649",
            "617673396283947",
            "1853020188851841",
            "5559060566555523",
            "16677181699666569",
            "50031545098999707",
            "150094635296999121",
            "450283905890997363",
            "1350851717672992089",
            "4052555153018976267",
            "12157665459056928801",
            "36472996377170786403",
            "109418989131512359209",
            "328256967394537077627",
            "984770902183611232881",
            "2954312706550833698643",
            "8862938119652501095929",
            "26588814358957503287787",
            "79766443076872509863361",
            "239299329230617529590083",
            "717897987691852588770249",
            "2153693963075557766310747",
            "6461081889226673298932241",
            "19383245667680019896796723",
            "58149737003040059690390169",
            "174449211009120179071170507",
            "523347633027360537213511521",
            "1570042899082081611640534563",
            "4710128697246244834921603689",
            "14130386091738734504764811067",
            "42391158275216203514294433201",
            "127173474825648610542883299603",
            "381520424476945831628649898809",
            "1144561273430837494885949696427",
            "3433683820292512484657849089281"
};

int fun(unsigned long long num);

int main()
{
    //freopen("acm.acm","r",stdin);
    unsigned long long  num;
    unsigned long long  tem;
    int index;
    int i;
    while(cin>>num)
    {
        if(num == 0)
        {
            break;
        }
    //    cout<<num<<endl;
        if(num == 1)
        {
            cout<<"{ }"<<endl;
        }
        else
        {
            index = fun(num-1);
            cout<<"{ ";
            //cout<<index<<endl;
            int j = 0;
            for(i = 0; i < index-1; ++ i)
            {
                if(_m[i] == 1)
                {
                    cout<<p[j]<<", ";
                }
                ++ j;
            }
            if(_m[i] == 1)
            {
                cout<<p[j];

            }
            cout<<" }"<<endl;
        }
    }
}

int fun(unsigned long long num)
{
    int i = 0;
    while(num)
    {
        _m[i ++] = num%2;
        num /= 2;
    }
    return i;
}

关注我的公众号,当然,如果你对Java, Scala, Python等技术经验,以及编程日记,感兴趣的话。 

技术网站地址: vmfor.com

原文地址:https://www.cnblogs.com/gavinsp/p/4566575.html