我tm 直接枚举
查看原帖
我tm 直接枚举
974929
yueyueyue000楼主2023/12/14 21:03
#include<iostream>
#include<unordered_map>
#include<vector>
#include<cmath>
using namespace std;
unordered_map<int,string>m;
vector<int>_2;
int n;
int main()
{
    m[0]="2(0)";
    m[1]="2";
    m[2]="2(2)";
    m[3]="2(2+2(0))";
    m[4]="2(2(2))";
    m[5]="2(2(2)+2(0))"; // 2(2(2+2(0))+2)
    m[6]="2(2(2)+2)";
    m[7]="2(2(2)+2+2(0))";
    m[8]="2(2(2+2(0)))";
    m[9]="2(2(2+2(0))+2(0))";
    m[10]="2(2(2+2(0))+2)";
    m[11]="2(2(2+2(0))+2+2(0))";
    m[12]="2(2(2+2(0))+2(2))";
    m[13]="2(2(2+2(0))+2(2)+2(0))";
    m[14]="2(2(2+2(0))+2(2)+2)";
    cin>>n;
    int t=n;
    while(n>0)
    {
        int s=0;
        while(true)
        {
            int t=pow(2,s);
            if(n-t<0)
            {
                n-=pow(2,s-1);
                _2.push_back(s-1);
                break;
            }
            ++s;
        }
    }
    for(int i=0;i<_2.size();++i)
    {
        int t=_2[i];
        cout<<m[t];
        if(i!=_2.size()-1)cout<<"+";
    }
    
    return 0;
    
}
2023/12/14 21:03
加载中...