蓝桥杯-3n+1问题(例题)
来源:互联网 发布:电动自行车 知乎 编辑:程序博客网 时间:2024/05/21 21:01
“3n+1”问题:
对于任意大于1的自然数n,若该数为偶数则将其变为原来的一半,若为奇数则将其变为3n+1。反复进行上述过程,直到结果为1时停止。这就是著名的“3n+1”问题。要求输入n,输出按“3n+1”规则变换到1所需要的数字变换次数。(n<=10^9)
分析:
因循环次数不确定,而且n也不是“递增”式的循环,因此可用while循环实现计算过程,用一个计数变量统计数字变换次数。不过需要特别注意的是,若n是无限接近10^9的奇数,如果声明为int型,在乘以3的过程中会出现溢出,因此输入的数在运算过程中应声明为长整型,并避免直接输入输出(不同编译器输入输出格式有区别);或者使用C++输入输出流等方法。
源代码:
#include <stdio.h>int main(){int num,count; //count:“计数器”,统计变换次数long long n; //长整型参与运算,避免乘法溢出问题while(scanf("%d",&num)!=EOF){count=0;n=num;while(n>1) //奇偶分类讨论{if(n%2==1)n=3*n+1;elsen/=2;count++;}printf("%d\n",count);}return 0;}
程序截图:
0 0
- 蓝桥杯-3n+1问题(例题)
- 例题 2-1 aabb 2-2 3n+1问题
- 《ACM程序设计》例题解析-N皇后问题
- 蓝桥杯 3n+1问题
- 3n+1问题(Hailstone问题)
- a + b问题(例题)
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- 3n+1问题
- hihocoder1133 : 二分·二分查找之k小数
- 我的博客
- 疯狂JAVA习题 数字转换成人民币
- js 闭包和内存泄露(说的很清楚)
- 错误类型
- 蓝桥杯-3n+1问题(例题)
- 码排序
- css 实现居中
- 重新创建Activity
- 安卓的点击事件
- git常用命令
- revit二次开发里获得指定参数并修改
- 序列化——反序列化(个人)
- 复制目录或文件以及生成临时目录或文件