1031.XXX定律

题目描述:

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

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

输入:

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

    对于每组测试用例请输出一个数,表示需要经过的步数,每组输出占一行。
样例输入:
3
1
0
样例输出:
5
0
#include<iostream>
using namespace std;

int change(int x){
    if(x%2==0) return x/2;
    else return (3*x+1)/2;
}

int main(){
    int n;
    while(cin>>n){
        if(n==0) break;
        int i=0;
        while(n!=1){
            n=change(n);
            i++;
        }
        cout<<i<<endl;
    }
    return 0;
}

原文地址:https://www.cnblogs.com/bernieloveslife/p/9736570.html

时间: 2024-08-30 06:21:41

1031.XXX定律的相关文章

九度OJ 1031 xxx定律

题目1031:xxx定律 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4995 解决:3187 题目描述:     对于一个数n,如果是偶数,就把n砍掉一半:如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止. 请计算需要经过几步才能将n变到1,具体可见样例. 输入:     测试包含多个用例,每个用例包含一个整数n,当n为0 时表示输入结束.(1<=n<=10000) 输出:     对于每组测试用例请输出一个数,表示需要经过的步数,每组输出占一行. 样例输入:

九度oj 1031 xxx定律 2009年浙江大学计算机及软件工程研究生机试真题

题目1031:xxx定律 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5153 解决:3298 题目描述:     对于一个数n,如果是偶数,就把n砍掉一半:如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止.    请计算需要经过几步才能将n变到1,具体可见样例. 输入:     测试包含多个用例,每个用例包含一个整数n,当n为0 时表示输入结束.(1<=n<=10000) 输出:     对于每组测试用例请输出一个数,表示需要经过的步数,每组输出占一行. 样例输

九度oj 题目1031:xxx定律 题目1033:继续xxx定律

题目描述:     对于一个数n,如果是偶数,就把n砍掉一半:如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止.    请计算需要经过几步才能将n变到1,具体可见样例. 输入:     测试包含多个用例,每个用例包含一个整数n,当n为0 时表示输入结束.(1<=n<=10000) 输出:     对于每组测试用例请输出一个数,表示需要经过的步数,每组输出占一行. 样例输入: 3 1 0 样例输出: 5 0 1 #include <cstdio> 2 #include

HDU 3782 xxx定律

xxx定律 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4606    Accepted Submission(s): 3333 Problem Description 对于一个数n,如果是偶数,就把n砍掉一半:如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止.请计算需要经过几步才能将n变到1,具体可见样例. Inpu

xxx定律(杭电oj3782)

xxx定律 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2759    Accepted Submission(s): 2035 Problem Description 对于一个数n,如果是偶数,就把n砍掉一半:如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止. 请计算需要经过几步才能将n变到1,具体可见样例. In

hdoj 3784 继续xxx定律

xxx定律快要忘了 代码: #include <stdio.h> #include <string.h> #define M 3000005 int a[M]; bool vis[M]; int temp[M]; int main() { int n; while(scanf("%d", &n), n){ int i, j; for(i = 0; i < n; i ++){ scanf("%d", &a[i]); } m

九度OJ—题目1031:xxx定律

题目描述:     对于一个数n,如果是偶数,就把n砍掉一半:如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数变为1为止. 请计算需要经过几步才能将n变到1,具体可见样例. 输入:     测试包含多个用例,每个用例包含一个整数n,当n为0 时表示输入结束.(1<=n<=10000) 输出:     对于每组测试用例请输出一个数,表示需要经过的步数,每组输出占一行. 样例输入: 3 1 0 样例输出: 5 0 来源: 2009年浙江大学计算机及软件工程研究生机试真题 答疑: 解题遇到问题

九度oj 题目1345:XXX定律之画X

题目描述: 给你一个n,然后让你输出F(n)规则是这样的,F(n)的输出结果是:F(n-1)     F(n-1)       F(n-1) F(n-1)      F(n-1) F(1)的输出结果是:X那么根据规则F(2)的输出结果应该是:X X  X  X X 输入: 题目有多组输入,每组输入一个n(n<=7). 当输入零或负数的时候结束输入. 输出: 对每组输入输出相应的F(n),每组输出最后一行是‘#’. 样例输入: 1 2 3 -1 样例输出: X # X X X X X # X X

《程序设计技术》课程辅助学习资料

本文档提供课程相关的辅助学习资料. 阅读程序是提高程序设计水平的最为有效的方法,<程序设计技术>课程至少应该阅读后面提供链接博文中的基础部分.能够阅读完基础部分的博文,则可以给课程学习奠定一个坚实的基础. 自己编写程序也是学习编程必不可少的一个环节.自己编写是否正确可以通过OJ系统来验证.选做OJ的程序设计题方便于评价自己所写的程序是否正确.想要提高编写程序的能力并且达到更高的水平,从各个OJ中选做一些编程题是十分必要的. 文中提供了CCF-CSP认证考试历年 试题的第1题的题解.这些题解中都