GH6 2022-08-28 10:26 采纳率: 50%
浏览 27
已结题

P1010 [NOIP1998 普及组] 幂次方


#include<bits/stdc++.h>
using namespace std;
string run(int x,int i=0,string s=string("")){
    if(x==0)return string("0");
    do if(x&1)s=(i==1?"2":"2("+run(i)+")")+(s==""?"":"+")+s;//拼接字符串,应题意,要把低次方接在后面
    while(++i,x>>=1);//每次向右移位
    return s;
}
int main(){
    int x;cin>>x;
    cout<<run(x)<<endl;
}
  • 写回答

2条回答 默认 最新

  • harmis_yz 2022-08-28 10:49
    关注
    
    #include<bits/stdc++.h>
    
    using namespace std;
    
    string p(int x,int i=0,string a=string(""))
    {
        if(x==0)
        {
            return string("0");
        }
        
        do 
        {
            if(x&1)
            {
                a=(i==1?"2":"2("+p(i)+")")+(a==""?"":"+")+a;
            }
        }
        while(++i,x>>=1);
        
        return a;
    }
    
    long long aa;
    
    int main()
    {
        cin>>aa;
        
        cout<<p(aa);
        
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 9月4日
  • 已采纳回答 8月28日
  • 创建了问题 8月28日