记录C语言冰雹猜想的实现过程

文章目录

    • 记录C语言冰雹猜想的实现过程
  • 问题引入
  • 一、冰雹猜想问题分析
  • 二、代码实现
  • 写在最后

问题引入

冰雹猜想:任一正整数x,如果x是奇数就乘以3加1,如果是偶数就除以2,反复计算,最终都将会得到数字1。


一、冰雹猜想问题分析

冰雹猜想的思路很简单,洛谷上有道引用冰雹猜想的题:

先分析一下样例 的实现过程:

二、代码实现

(这是个错误的代码,来分析一下问题)

#include<stdio.h>
int main()
{int i,j,n,m,a[100],t,k=0;scanf("%d",&n);m=n;for(i=0;;i++){ if(n%2==0)/*判断n是否为偶数*/{for(i=0;;i++){t=n/2;a[k++]=t;n=t;if(n%2!=0)break ;}}else{for(i=0;;i++){t=3*n+1;a[k++]=t;/*k可以作为新数组的下表,同时也起到计数器的作用*/n=t;if(n%2==0)break;}}if(n==1)break;/*控制外循环的条件是n为1*/}for(i=k-1;i>=0;i--)/*新数组里有k个元素,因此输出数组时对应下标为0-k-*/{printf("%d ",a[i]);}printf("%d",m);/*新数组并没有把最初的n放进去,因此还要输出n本身,由于经过上面的循环n的值已经改变,所以前面把原始的n储存在m中,这里输出m即为输出原始的n*/}

大体思路没什么问题,但是有两个测试点没通过

于是我运行了一下,发现错在“1”这里

也就是说当程序认为1为奇数,输入1后进行了3*1+1的计算,但是题中的要求是如果输入1,输出结果也为1,所以我又把输入1和非1的情况分开了

#include<stdio.h>
int main()
{int i,j,n,m,a[100],t,k=0;scanf("%d",&n);m=n;if(n!=1)/*在这里做了修改*/{for(i=0;;i++){ if(n%2==0){for(i=0;;i++){t=n/2;a[k++]=t;n=t;if(n%2!=0)break ;}}else{for(i=0;;i++){t=3*n+1;a[k++]=t;n=t;if(n%2==0)break;}}if(n==1)break;}for(i=k-1;i>=0;i--){printf("%d ",a[i]);}printf("%d",m);}elseprintf("1");
}

现在输入1的问题解决了

但是最后一个测试点还是有问题


搜索了这个报错的原因,如下图。还是不知道该如何解决这个问题,于是我换了一种思路


正确的代码在这里!

#include<stdio.h>
int main()
{int n;scanf("%d",&n);int a[200];int i;int count=0;/*换回了计数器的方法*/for(i=0;;i++){if(n%2==0){a[i]=n;n=n/2;if(a[i]==1)break;}else{a[i]=n;n=n*3+1;if(a[i]==1)break;}count++;}for(i=count;i>=0;i--){printf("%d ",a[i]);}return 0;
}


终于通过了!

写在最后

关于那个报错还是有点不理解,是代码写错了还是其他问题,希望大家多多指教

记录洛谷冰雹猜想的实现过程相关推荐

  1. 刷题记录:洛谷P4147玉蟾宫

    传送门:洛谷 题目描述: 这片土地被分成 N × M N\times M N×M 个格子,每个格子里写着 'R' 或者 'F',R 代表这块土地被赐予了 rainbow,F 代表这块土地被赐予了 fr ...

  2. 做题记录 洛谷P1230 智力大冲浪

    题目描述 小伟报名参加中央电视台的智力大冲浪节目.本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参赛者m元.先不要太高兴!因为这些钱还不一定都是你的?!接下来主持人宣布了比赛规则: ...

  3. p5727深基5.例3冰雹猜想c语言,深基

    欸嘿,典型的求解第k小的数的问题 算法中使用了快速排序 关键之处在于原本快排需要两边都进行排序,但现在我们只关心第k小的数,所以,如果在ll比k大那么就排左半边,比k小就比右半边,从而实现时间复杂度的 ...

  4. 洛谷刷题C语言:距离函数、闰年展示、计算阶乘、猴子吃桃、培训

    记录洛谷刷题QAQ 一.[深基7.例1]距离函数 题目描述 给出平面坐标上不在一条直线上三个点坐标 (x1,y1),(x2,y2),(x3,y3)(x_1,y_1),(x_2,y_2),(x_3,y_ ...

  5. 洛谷日常刷题(洛谷官方题单 思路+详解)

    目录 前言 非官方题单的题 P1141 01迷宫 1-4 递推与递归 P1255 数楼梯 1002 [ NOIP 2002 普及组]过河卒 P1044 [NOIP2003 普及组] 栈 P1028 [ ...

  6. 洛谷刷题:明明的随机数、质因数分解、不高兴的津津、津津对的储存计划和车厢重组

    记录洛谷刷题过程QAQ 一. [NOIP2006 普及组] 明明的随机数 题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N N N 个 1 1 1 到 1 ...

  7. scratch数学编程100例_《scratch编程+数学》课程:编程实现数字黑洞冰雹猜想

    冰雹猜想就是指随便给出一个自然数,如果是奇数,那么就给这个数乘以3再加上1:如果是偶数就除以2:依次不停地进行重复计算,可以发现无论这个过程中的数值如何庞大,最终还是会像冰雹一样坠落,变成1,因此就把 ...

  8. 洛谷刷题C语言:数字反转、再分肥皂水、三角形面积、Apples Prologue/苹果和虫子、数的性质

    记录洛谷刷题QAQ,一些不大优雅的代码 一.[深基2.例7]数字反转 题目描述 输入一个不小于 100100100 且小于 100010001000,同时包括小数点后一位的一个浮点数,例如 123.4 ...

  9. 洛谷刷题C语言:Even? Odd? G、The Robot Plow G、pb的游戏(1)、询问学号、cover

    记录洛谷刷题QAQ 一.[USACO09OCT]Even? Odd? G 题目描述 Bessie's cruel second grade teacher has assigned a list of ...

最新文章

  1. 数据结构与算法(C++版)
  2. Oracle数据库表信息,序列,视图等导出,导入。(数据库备份和恢复)
  3. c++ 线程什么时候run_阿里后端Java面试题:启动线程是start()还是run()?为什么?...
  4. i春秋DMZ大型靶场实验(四)Hash基础
  5. HBase读链路分析
  6. 使用 Redis 如何实现延迟队列?
  7. 动态规划—最长上升子序列(POJ 1458)
  8. java 开发银行支付、对账时证书相关的操作总结
  9. Jenkins 集成Ansible教程
  10. 啊哈C语言 第8章 游戏时间到了(第29讲)
  11. 电路故障检测与调试分析
  12. HDU-1527-取石子游戏【威佐夫博弈】
  13. [论文总结] 深度学习在农业领域应用论文笔记10
  14. 基于Java(SSM)+MySQL的二手书籍交易系统【100010084】
  15. 【Python打卡2019】20190406之货币兑换
  16. Unity 时装换色
  17. 原生js监听滚动条_原生JS实现滚动条监听
  18. 笔试题-跳格子游戏,Java代码
  19. Flutter 如何监听页面在前台还是后台
  20. 仙山瑶池,灵水神泉”的美誉

热门文章

  1. 基于Python的高校请假管理信息系统开发(Django框架)
  2. 深度学习(花书)--概率与信息论
  3. 7.python 移动目录下的文件至另一个目录下
  4. 数据结构与算法-Part6——数组与广义表
  5. 【计算机毕业设计】6.超市仓库管理系统+vue
  6. 华科实验室信息汇总:
  7. android Telephony学习 --- 第九篇 USSD简介
  8. 怎么学计算机知识竞赛,计算机基础学习知识竞赛题目答案解析.docx
  9. Ajax 不显示BlockUI 的问题
  10. 在史蒂夫传中寻找现实扭曲力场2