玩具(普及组复赛模拟题)

mac2024-10-28  14

问题描述:

有一种玩具,在玩具上有一个红色按钮,一个黄色按钮和一万个能坐能站的小木偶,按一次红色的按钮,就会有一个站着的小木偶坐下去,按一次黄色按钮,就可以使站着的小木偶增加一倍。开始时有三个小木偶站着,要想使站着的小木偶增加到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; }
最新回复(0)