110101_The 3n+1 problem
http://www.programming-challenges.com/pg.php?page=downloadproblem&probid=110101&format=html
UVA 100_The 3n+1 problem
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=29&page=show_problem&problem=36
题目大意:
从整数 n 开始,如果 n 是偶数,把它除以 2;如果 n 是奇数,把它乘 3 加 1。
用新得到的值重复上述步骤,直到 n = 1 时停止。
例如,n = 22 时该算法生成的序列是: 22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1
对于给定的 n,该序列的元素(包括 1)个数被称为 n 的循环节长度。
在上述例子中,22 的循环节长度为 16。输入两个数 i 和 j,
你的任务是计算 i 到 j(包含 i 和 j)之间的整数中,循环节长度的最大 值。
样例输入:
1 10 100 200 201 210 900 1000
样例输出:
1 10 20 100 200 125 201 210 89 900 1000 174
可以用暴力法,对每次输入的数值进行计算,求出最大值
#include<cstdio>#include<iostream>using namespace std; int fun(int n){int sum=1;while(n!=1) {if(n&1) n=n*3+1;else n>>=1; sum++; }return sum;} int main(){int a,b,max,i,sum,t,x,y;while(scanf("%d%d",&a,&b)!=EOF) { x=a; y=b;if(a>b) { t=a; a=b; b=t; } max=-1;for(i=a;i<=b;i++) { sum=fun(i);if(sum>max) max=sum; } printf("%d %d %d\n",x,y,max); }return 0;}
记录已计算的值,如果已经计算过,则直接读取
//因为计算过程中所得的数会超出int的范围,所以要用__int64或者long long型
#include<cstdio>#include<iostream>using namespace std; #define N 1000000 long long num[N]; long long fun(long long n){if(n==1)return 1;if(n&1) n=n*3+1;else n>>=1;if(n<N) //如果已经计算过,则不必再计算一次了,读取即可 {if(!num[n]) { num[n]=fun(n); }return 1+num[n]; }return 1+fun(n);} int main(){long long a,b,t,x,y,max,temp;while(scanf("%lld%lld",&a,&b)!=EOF) { x=a; y=b;if(x>y) { t=x; x=y; y=t; } max=-1;for(t=x;t<=y;t++) { temp=fun(t);if(max<temp) max=temp; } printf("%lld %lld %lld\n",a,b,max); }return 0;}
转载于:https://www.cnblogs.com/pcoda/archive/2012/02/28/2371698.html
110101_The 3n+1 problem相关推荐
- Poj1207 The 3n + 1 problem(水题(数据)+陷阱)
一.Description Problems in Computer Science are often classified as belonging to a certain class of p ...
- POJ 1207 The 3n + 1 problem
题目链接:http://poj.org/problem?id=1207 题目大意:给你一个数x,规定一个函数F(x),如果x为1则F(x)==1,否则如果x是偶数,F(x)==F(x/2),x为奇数F ...
- POJ1207-The 3n + 1 problem
http://poj.org/problem?id=1207 注意输入两个数的大小,水... #include <stdio.h> int main(void) {int a,b,m,co ...
- The 3n + 1 problem UVA - 100
[问题描述] 考虑如下的序列生成算法:从整数 n 开始,如果 n 是偶数,把它除以 2:如果 n 是奇数,把它乘 3 加1.用新得到的值重复上述步骤,直到 n = 1 时停止.例如,n = 22 时该 ...
- 问题 L: The 3n + 1 problem
题目描述 计算机科学中的问题往往被归纳为某一类问题(如NP问题,无法解决问题,递归等).在这道问题中你将分析一种算法,它对所有可能的输入结果是未知的. 考虑以下算法: 输入n 输出n 如果n=1然后停 ...
- PC110101:The 3n+1 problem
第一道题居然就卡了这么久惭愧惭愧. 过程中出现这么几个问题. 1.关于最终和的数据类型要选择long. 2.循环中途max要初始化为0: 贴出代码. #include<stdio.h>in ...
- PC/UVa 题号: 110101/100 3n+1 Problem
不解释了,暴力,不过需要注意的是 i有可能大于j #include <stdio.h> #include <string.h> #define maxnum 1000001 l ...
- PC110101(3n+1问题)(3n+1 Problem)
单纯模拟,用一个数组记录下"沿途"的值,避免重复运算. 注意: 1. 中间计算过程会超过int或long型数据所能表示的范围,故需要选择long long型整数. 2. 输入时可能 ...
- 【HDOJ】1032 The 3n + 1 problem_天涯浪子_新浪博客
[题目] http://acm.hdu.edu.cn/showproblem.php?pid=1032 [报告] 直接暴力题.不过最后还是用了记忆化搜索.总感觉直接暴力会TLE.网上有大神用线段树做的 ...
最新文章
- R语言绘制堆叠条形图
- 程序物语(四):苹果是如何落到牛顿头上的?
- python中的set类型
- KDT#94 为DW/BI系统建立定制工具
- 2019阿里云开年Hi购季云通信分会场全攻略!
- android 集成x5内核时 本地没有,腾讯浏览服务-接入文档
- 【Java】计算一组同学一门课程的平均成绩、最高成绩和最低成绩
- Android大图片裁剪解决方案
- 一周第二次课(3月20日)1.6/1.7 配置IP 1.8 网络问题排查
- 2021年最后一个月
- C# 获取当前路径或父路径
- 【C++】 ArcFace Demo2.0版
- 呼和浩特市啥时计算机考试,2021上半年内蒙古自治区呼和浩特市全国计算机等级考试时间...
- 软件测试常见的用例设计方法
- java blog 引擎_推荐10个Java开源CMS系统
- 计算机的计算百分比的函数是哪个好,excel用函数计算百分比计算的方法
- com组件 的劫持_IE首页被劫持跳转问题的解决方案
- Orz是什么意思……
- 图像处理职位面试题汇总(2)
- 国标GB/T28181协议EasyGBS历史录像回放有多路视频流时,如何单独对某路流进行控制操作?
热门文章
- vue+iview 自定义实现穿梭框
- 计算机辅助设计设计师理论知识试卷,《计算机辅助设计》考试试卷A
- The Cross-evaluation of Machine Learning-based Network Intrusion Detection Systems
- 算法-----劳斯-赫尔维茨(Routh-Hurwitz)稳定判据(转)
- Python 入门指南 [闲聊]
- 即构科技冼牛:微信小程序的视频直播实践
- 新手股民炒股第一次怎么玩?
- 不做孔乙己也不做骆驼祥子
- 【ArcGIS微课1000例】0068:ArcGIS加载world imagery高清卫星影像教程
- 【研二下 | 知识学习 | Ing】