P1010 幂次方
本萌新来写题解辣! 此处@某某学姐
----------------------------------巨丑的分割线------------------------------------
听了学姐的建议来写题解会有用的QWQ
这里膜malao orzorzorzorzorzorz
----------------------------------巨丑的分割线------------------------------------ 啊现在开始写题解oWo
先审题。。。。。可以用递归别的不会QWQ
一步步来
137=2^7+2^3+2^0
那么可以得到这个
int i=-1,y;
int m;
do
{
i++;
m=pow(2,i);
}
while(m<=n);
这个就是用来得出指数i的
又看到7=2^2+2+2^0
就可以来这一步ovo
y=i-1; //把i的值给y省的弄错
if(y==0)cout<<"2(0)"; //分别讨论
if(y==1)cout<<2;
if(y>1) //若还能分就把它带回到这个递归里来
{
cout<<"2(";
mi(y);
cout<<")";
}
那么第一个数解出来了 下一步是解决+多少 很简单,再把这个剩下的再带回去算一遍就行owo
n-=pow(2,y);
cout<<"+";
mi(n);
然后就是主程序了
int main(){
int n; //简短 讲究
cin>>n;
mi(n);
return 0;
}
然后最后把全部弄出来
#include<iostream>
#include<cmath>
using namespace std;
void mi(int n){
int i=-1,y;
int m;
do
{
i++;
m=pow(2,i);
}
while(m<=n);
y=i-1;
if(y==0)cout<<"2(0)";
if(y==1)cout<<2;
if(y>1)
{
cout<<"2(";
mi(y);
cout<<")";
}
if(n!=pow(2,y))
{
n-=pow(2,y);
cout<<"+";
mi(n);
}
}
int main(){
int n;
cin>>n;
mi(n);
return 0;
}