站外题求助
  • 板块灌水区
  • 楼主Level_1024
  • 当前回复9
  • 已保存回复9
  • 发布时间2021/1/9 21:06
  • 上次更新2023/11/5 04:58:59
查看原帖
站外题求助
377794
Level_1024楼主2021/1/9 21:06
【 题目描述 】
有一种玩具,在玩具上有一个红色按钮、一个黄色按钮和一百万个能坐能站的小木偶,按一次红色的按钮,就会有一个站着的小木偶坐下去,按一次黄色按钮,就可以使站着的小木偶增加一倍。开始时有三个小木偶站着,要想使站着的小木偶变成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;
}
2021/1/9 21:06
加载中...