首页 > 编程知识 正文

牛客网校园招聘,牛客网sql题目

时间:2023-05-06 04:09:49 阅读:261438 作者:1374

勇气获得机

妞妞听说Nowcoder Girl女生编程挑战赛要开始了, 但是她没有足够的勇气报名参加, 牛牛为了帮助妞妞,给她准备一台勇气获得机。初始的时候妞妞的勇气值是0, 勇气获得机有两个按钮:

1、N按钮: 如果当期拥有的勇气值为x, 按下之后勇气值将变为2*x+1,

2、G按钮: 如果当前拥有的勇气值为x, 按下之后勇气值将变为2*x+2,

勇气值过高也会膨胀,所以妞妞需要将自己的勇气值恰好变为n, 请你帮助她设计一个勇气获得机的按键方案使妞妞的勇气值恰好变为n。

输入描述: 输入包括一行, 包括一个正整数n(1 <= n <= 10^9), 表示妞妞最后需要的勇气值。 输出描述: 输出一行字符串, 每个字符表示该次妞妞选择按动的按钮,'N'表示该次按动N按钮,'G'表示该次按动G按钮。

示例1

输入 20 输出 NGNG 代码与思路

因为2乘以任意实数,得到的积都为偶数,故,N可以代表一个奇数,G可以代表一个偶数。具体算法,判断输入数字是奇数还是偶数,如果是奇数,那么用N分解它,得到一个N按钮。如果是偶数,那么用G分解它,得到一个G按钮。由于分解的步骤与获得的步骤是倒序的,我们可以把分解操作得到的按钮添加到前面及可。

#include<stdio.h>#include<string>using namespace std;int main(){ int n; while(~scanf("%d",&n)){ string res=""; while(n) if(n&1) n=(n-1)>>1,res="N"+res; else n=(n-2)>>1,res="G"+res; printf("%sn",res.c_str()); }}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。