问题描述:
有一种玩具,在玩具上有一个红色按钮,一个黄色按钮和一万个能坐能站的小木偶,按一次红色的按钮,就会有一个站着的小木偶坐下去,按一次黄色按钮,就可以使站着的小木偶增加一倍。开始时有三个小木偶站着,要想使站着的小木偶增加到N个,最少按几次按钮就行了?请编一程序,由键盘输入n输出最少按的次数。 输入说明: 一个整型数字 输出说明:一个整型数字 样例输入:21 样例输出:5 【数据范围】 N(1≤N≤10000)
题解:
题目分析,得到一个规律:要让按的次数最少,最好多使用黄色按钮,即扩大倍数,而红色按钮只是为了解决奇数问题。
重要代码:
cin
>>n
;
while(n
>3){
if(n
%2==0)n
/=2;
else n
++;
s
++;
}
完整代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std
;
int main()
{
int n
,s
;
cin
>>n
;
while(n
>3){
if(n
%2==0) n
/=2;
else n
++;
s
++;
}
cout
<<s
;
}