2 条题解
-
2
不想思考,直接打表:
#include<iostream> #include<vector> typedef long long LL; #define _P(A) A=-~A #define fione(i,a,b) for(int i=a;i<=b;_P(i)) #define Fione(i,a,b) for(int i=a;i<b;_P(i)) int n; std::vector<int>a; inline void work(int id){ switch(id){ case 0:std::cout<<"2(0)";break; case 1:std::cout<<"2";break; case 2:std::cout<<"2(2)";break; case 3:std::cout<<"2(2+2(0))";break; case 4:std::cout<<"2(2(2))";break; case 5:std::cout<<"2(2(2)+2(0))";break; case 6:std::cout<<"2(2(2)+2)";break; case 7:std::cout<<"2(2(2)+2+2(0))";break; case 8:std::cout<<"2(2(2+2(0)))";break; case 9:std::cout<<"2(2(2+2(0))+2(0))";break; case 10:std::cout<<"2(2(2+2(0))+2)";break; case 11:std::cout<<"2(2(2+2(0))+2+2(0))";break; case 12:std::cout<<"2(2(2+2(0))+2(2))";break; case 13:std::cout<<"2(2(2+2(0))+2(2)+2(0))";break; case 14:std::cout<<"2(2(2+2(0))+2(2)+2)";break; } } inline void solve(){ bool pd(false); for(int i=a.size()-1;i>=0;--i){ if(a[i]){ if(pd)std::cout<<'+'; pd=true; work(i); } } } signed main(){ std::cin.tie(nullptr)->std::ios::sync_with_stdio(false); std::cin>>n; for(;n;n>>=1)a.push_back(n&1); solve(); return 0; }
-
2
#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; }
- 1
信息
- ID
- 11
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- 递交数
- 36
- 已通过
- 33
- 上传者