求调 Orz
查看原帖
求调 Orz
928598
cccccsngbydmr楼主2024/7/26 14:11
orz
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
long long n;
string b(long long n){
    string ans;
    while(n!=0){
        ans=char(n%2+'0')+ans;
        n/=2;
    }
    return ans;
}
void B(long long n){
    if(n==2){
        cout<<2;
        return;
    }
    if(n==1){
        cout<<"2(0)";
        return;
    }
    string s=b(n);
    bool f=0;
    cout<<2<<'(';
    for(int i=0;i<s.size();i++){
        if(s[i]=='1'){
            if(f!=0) cout<<'+';
            else f=1;
            B(pow(2,s.size()-i-1)/2);
        }
    }
    cout<<')';
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    long long n;
    cin>>n;
    string s=b(n);
    bool f=0;
    for(int i=0;i<s.size();i++){
        if(s[i]=='1'){
            if(f!=0) cout<<'+';
            else f=1;
            B(pow(2,s.size()-i-1));
        }
    }
    return 0;
}
2024/7/26 14:11
加载中...