【 题目描述 】
有一种玩具,在玩具上有一个红色按钮、一个黄色按钮和一百万个能坐能站的小木偶,按一次红色的按钮,就会有一个站着的小木偶坐下去,按一次黄色按钮,就可以使站着的小木偶增加一倍。开始时有三个小木偶站着,要想使站着的小木偶变成N个,最少按几次按钮就行了?每一次按哪个按钮?
【 输入 】
输入一个正整数N(1≤N≤1000000)
【 输出 】
第一行输出由1(按红色按钮)和2(按黄色按钮)组成的按钮次序
第二行输出按钮的总次数。
【 样例输入 】
21
【 样例输出 】
22121
5
【 来源/分类 】
原创
窝的代码
6个点AC了4个
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
long long n;
cin>>n;
long step=0;
string s;
while(n>=(3+1))
{
if(n%2==0)
{
n/=2;
step++;
s[step-1]='2';
}
else
{
n++;
step++;
s[step-1]='1';
}
}
if(n==3)
{
for(int i=step-1;i>=0;i--)
{
cout<<s[i];
}
cout<<endl<<step;
}
if(n==2)
{
for(int i=0;i<=step-2;i++)
{
cout<<s[i];
}
cout<<'1';
cout<<endl<<step;
}
return 0;
}