80分求求大神发解答?‍♂️?‍♂️

P1010 [NOIP1998 普及组] 幂次方

``` #include<iostream> #include<bitset> using namespace std; int n; string change(int x){ string s = ""; while(x){ s = char(x%2+'0') + s; x /= 2; } return s; } void print(int x){ if(x != n){ putchar('2'); if(x == 1) return; putchar('('); if(x == 0){ putchar('0'); putchar(')'); return; } } string s = change(x); bool flag = false; for(int i = 0;i < s.length();++i){ if(s[i] == '1'){ if(flag) putchar('+'); print(s.length()-1-i); flag = true; } } if(x != n) putchar(')'); } int main(){ scanf("%d",&n); print(n); return 0; } ```
by hnxxwpf @ 2024-02-08 10:47:36


@[120629q](/user/1272360) ```cpp #include<bits/stdc++.h> using namespace std; void work(int n) { if(n>2) { int js=0,x=n; while(x>=2) { js++; x/=2; } if(js>1) { cout<<"2("; work(js); cout<<")"; } else { cout<<2; } x=1; for(int i=1;i<=js;i++) { x*=2; } if(n-x!=0) { cout<<'+'; work(n-x); } } else if(n==1) { cout<<"2(0)"; return; } else { cout<<2; } } int main() { int n; cin>>n; work(n); return 0; }//禁止抄袭 ``````
by ycy1124 @ 2024-02-22 11:41:04


|