1001 害死人不偿命的(3n+1)猜想 (15 分)

简介: 1001 害死人不偿命的(3n+1)猜想 (15 分)

卡拉兹(Callatz)猜想:


对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。这样一直反复砍下去,最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证 (3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……


我们今天的题目不是证明卡拉兹猜想,而是对给定的任一不超过 1000 的正整数 n,简单地数一下,需要多少步(砍几下)才能得到 n=1?


输入格式:

每个测试输入包含 1 个测试用例,即给出正整数 n 的值。


输出格式:

输出从 n 计算到 1 需要的步数。


输入样例:

3

结尾无空行


输出样例:

5


思路: 直接暴力,如果是奇数就为3*n+1,偶数就除以2

#include<iostream>
using namespace std;
int main()
{
    int x,k=0;
    cin>>x;
    while(x!=1)
    {
        if(x&1) x=(3*x+1)/2;//奇数
        else x/=2;//偶数
        k++;//计数
    }
    cout<<k;
    return 0;
}



目录
相关文章
|
6月前
1001 害死人不偿命的(3n+1)猜想
1001 害死人不偿命的(3n+1)猜想
31 0
|
6月前
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个题目详解(逻辑类型题2)
日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个题目详解(逻辑类型题2)
97 1
|
测试技术
害死人不偿命的(3n+1)猜想
害死人不偿命的(3n+1)猜想
|
C++ Python
【浙江大学PAT真题练习乙级】1001 害死人不偿命的(3n+1)猜想(15分)真题解析
【浙江大学PAT真题练习乙级】1001 害死人不偿命的(3n+1)猜想(15分)真题解析
【每日一道智力题】之海盗分金币(上)
【每日一道智力题】之海盗分金币(上)
257 0
|
人工智能 算法
算法学习 【第一周】 Ⅲ
“贪亦有道”,了解有关贪心算法的基础知识,如果我们在生活中也按照贪心算法那样去选择会是什么样的呢?
92 0
算法学习 【第一周】 Ⅲ
|
测试技术
PAT 1001 害死人不偿命的(3n+1)猜想
对任何一个正整数 n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把 (3n+1) 砍掉一半。
92 0
|
测试技术
PTA 7-1 祖传好运 (15 分)
我们首先定义 0 到 9 都是好运数,然后从某个好运数开始,持续在其右边添加数字,形成新的数字。
134 0
|
机器学习/深度学习 测试技术
PAT乙级1001 害死人不偿命的(3n+1)猜想 (15分)
PAT乙级1001 害死人不偿命的(3n+1)猜想 (15分)
85 0
|
测试技术
PAT乙级1005.继续(3n+1)猜想(25分)
PAT乙级1005.继续(3n+1)猜想(25分)
85 0