测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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

填空题 中等

题目描述

卡拉兹猜想(callatz)

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

同学们,对于给定的任一不超过 1000 的正整数 n,请计算需要多少步(砍几下)才能得到 n=1。

输入:输入数据只有一行一个正整数 n。

输出:一个正整数 k,表示需要 k 步才能得到 n=1。

样例 1

输入:(callatz.in)

3

输出:(callatz.out)

5

数据范围

1≤≤n≤1000

参考答案

#include<bits/stdc++.h> using namespace std; int main() { freopen("callatz.in","r",stdin); freopen("callatz.out","w",stdout); int ans=0,n; cin>>n; while(n!=1) { if(n%2==0) n=n/2; else n=(3*n+1)/2; ans++; } cout<<ans; fclose(stdin); fclose(stdout); return 0; }
上一题 下一题