3n+1 C语言练习
来源:互联网 发布:英文表达祝福知乎 编辑:程序博客网 时间:2024/05/18 14:43
在计算机科学上,有很多类问题是无法解决的,我们称之为不可解决问题。然而,在很多情况下我们并不知道哪一类问题可以解决,哪一类问题不可以解决。现在我们就有这样一个问题,问题如下:
(1)输入一个正整数n;
(2)把n显示出来;
(3)如果n=1则结束;
(4)如果n是奇数,则n变为3×n+1,否则n变为n/2;
(5)转入第(2)步。
例如对于输入的正整数22,应该有如下数列被显示出了:
22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
我们推测:对于任意一个正整数,经过以上算法最终会推到1。尽管这个算法很简单,但我们仍然无法确定我们的推断是否正确。不过好在我们有计算机,我们验证了对于小于1000000的正整数都满足以上推断。
对于给定的正整数n,我们把显示出来的数的个数定义为n的链长,例如22的链长为16。
你的任务是编写一个程序,对于任意一对正整数i和j,给出i与j之间的最长链长,当然这个最长链长是由i与j之间的其中一个正整数产生的,这里我们包括i和j.
输入
每个测试数据输入只有一行,包含2个正整数i和j(0 < i <= j < 10000).
输出
每个测试数据输出一行,即i与j之间的最长链长。
样例输入
1 10
样例输出
(1)输入一个正整数n;
(2)把n显示出来;
(3)如果n=1则结束;
(4)如果n是奇数,则n变为3×n+1,否则n变为n/2;
(5)转入第(2)步。
例如对于输入的正整数22,应该有如下数列被显示出了:
22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
我们推测:对于任意一个正整数,经过以上算法最终会推到1。尽管这个算法很简单,但我们仍然无法确定我们的推断是否正确。不过好在我们有计算机,我们验证了对于小于1000000的正整数都满足以上推断。
对于给定的正整数n,我们把显示出来的数的个数定义为n的链长,例如22的链长为16。
你的任务是编写一个程序,对于任意一对正整数i和j,给出i与j之间的最长链长,当然这个最长链长是由i与j之间的其中一个正整数产生的,这里我们包括i和j.
输入
每个测试数据输入只有一行,包含2个正整数i和j(0 < i <= j < 10000).
输出
每个测试数据输出一行,即i与j之间的最长链长。
样例输入
1 10
样例输出
20
#include<stdio.h>int main(){int ma(int *count,int);int a,b,i,j,count[10000],k,n,index=0;scanf("%d %d",&i,&j);for(a=i;a<=j;a++){k=1;n=a;while(n!=1){if(n%2==0){n=n/2;}else {n=3*n+1;}k++;}count[index++]=k;}printf("%d\n",ma(count,j-i+1));return 0;}int ma(int *count,int n){int i,ic=count[0];for(i=0;i<n;i++){ic=(ic>count[i]?ic:count[i]);}return ic;}
- 3n+1 C语言练习
- c语言练习3
- C语言练习3
- c语言练习1
- c语言练习1
- C语言练习(1)
- C语言练习1
- C语言练习1
- C语言练习1
- C语言练习1
- C语言 3n+1问题
- C语言基础练习3
- c语言练习(3)
- C语言数组练习1
- C语言指针练习1
- C语言函数练习1
- C语言字符串练习1
- C语言结构练习1
- Ubuntu 13.10 开机自动挂载 NTFS分区
- oracle 查看表大小
- sql server 存储过程学习
- 聊聊并发(一)——深入分析Volatile的实现原理
- fix协议封装挑战-测试代码
- 3n+1 C语言练习
- 关于 cocos2d-x win32 版本的 cpu 占用改良
- hibernate分页的实现
- Oracle导出sql语句存储过程
- 关于在ie下无法读写cookie的解决
- 基于jquery ajax 无刷新 文件批量上传插件 GooUploader整合struts2实现上传
- 北漂
- Oracle中的&号问题
- 聊聊并发(二)——Java SE1.6中的Synchronized