zoukankan      html  css  js  c++  java
  • PAT-1001. 害死人不偿命的(3n+1)猜想 (15)

    卡拉兹(Callatz)猜想:

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

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

    输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。

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

    输入样例:

    3
    

    输出样例:

    5
    

     //c++

     1 #include <iostream>
     2  
     3 using namespace std;
     4 
     5 int main()
     6 {
     7     int n,count = 0;
     8     cin >> n;
     9     while(1 != n)
    10     {
    11         if(n % 2 == 0)
    12             n = n / 2;
    13         else
    14             n =(3*n + 1) / 2;
    15         ++count;
    16     }
    17 
    18     cout << count;
    19 }

    //C

     1 #include <stdio.h>
     2 int main(){
     3   int n, step=0;
     4   scanf("%d", &n);
     5   while(n!=1){
     6     if(n%2==0)n=n/2;
     7     else n = (3*n+1)/2;
     8     step++;
     9   }
    10   printf("%d
    ", step);
    11   return 0;
    12 }
  • 相关阅读:
    Flutter高仿微信项目开源-具即时通讯IM功能
    flutter 如何实现文件读写(使用篇)
    这是我的第一篇博客,测试文章
    对于ServiceManager的理解
    Class文件结构
    App进程的启动
    对于SystemServer的理解
    对于Zygote的理解
    Git内部原理浅析
    二叉搜索树(BST)基本操作
  • 原文地址:https://www.cnblogs.com/boluo007/p/6757315.html
Copyright © 2011-2022 走看看