您的位置:首页 > 其它

OJ_1031

2014-02-16 08:47 197 查看
#include <iostream>
using namespace std;
bool isEven(int n)
{
if(n&0x1==1)return false;
return true;
}
void func()
{
int n;
int result;
while(cin>>n)
{
if(n==0)break;
result=0;
while(n!=1){
if(isEven(n))
n=n>>1;
else
n=(3*n+1)>>1;
result++;
}
cout<<result<<endl;

}

}
int main(int argc, char *argv[])
{
//printf("Hello, world\n");
func();
return 0;
}


奇偶判断

题目描述:
对于一个数n,如果是偶数,就把n砍掉一半;如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止。

请计算需要经过几步才能将n变到1,具体可见样例。

输入:
测试包含多个用例,每个用例包含一个整数n,当n为0 时表示输入结束。(1<=n<=10000)

输出:
对于每组测试用例请输出一个数,表示需要经过的步数,每组输出占一行。

样例输入:
3
1
0


样例输出:
5
0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: