Poj1207 The 3n + 1 problem(水题(数据)+陷阱)

C语言下实现冰雹猜想的算法 1976年的一天,《华盛顿邮报》于头版头条刊登了一条数学新闻,文中叙述了这样一则故事:70年代中期,美国个所名牌大学校园内,人们都像发疯一般,日以继夜废寝忘食地玩弄一种数学游戏,这个游戏十分简单,任意写出一个(非零)自然数N,并且按照以下规律进行变换: 如果是个奇数,则下一步变成 3N+1 如果是个偶数,则下一步变成 N/2 一时间学生、教师、研究员、教授,甚至是一等一的数学大拿、天才都纷纷加入这... 阅读详情

一、Description

Problems in Computer Science are often classified as belonging to a certain class of problems (e.g., NP, Unsolvable, Recursive). In this problem you will be analyzing a property of an algorithm whose classification is not known for all possible inputs.
Consider the following algorithm:
 

		1. 		 input n



		2. 		 print n



		3. 		 if n = 1 then STOP



		4. 		 		 if n is odd then   n <-- 3n+1



		5. 		 		 else   n <-- n/2



		6. 		 GOTO 2




Given the input 22, the following sequence of numbers will be printed 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

It is conjectured that the algorithm above will terminate (when a 1 is printed) for any integral input value. Despite the simplicity of the algorithm, it is unknown whether this conjecture is true. It has been verified, however, for all integers n such that 0 < n < 1,000,000 (and, in fact, for many more numbers than this.)

Given an input n, it is possible to determine the number of numbers printed before the 1 is printed. For a given n this is called the cycle-length of n. In the example above, the cycle length of 22 is 16.

For any two numbers i and j you are to determine the maximum cycle length over all numbers between i and j.


Input

The input will consist of a series of pairs of integers i and j, one pair of integers per line. All integers will be less than 10,000 and greater than 0.

You should process all pairs of integers and for each pair determine the maximum cycle length over all integers between and including i and j.

Output

For each pair of input integers i and j you should output i, j, and the maximum cycle length for integers between and including i and j. These three numbers should be separated by at least one space with all three numbers on one line and with one line of output for each line of input. The integers i and j must appear in the output in the same order in which they appeared in the input and should be followed by the maximum cycle length (on the same line).
二、题解

       这题真正的核心部分其实非常水,但是他的输入数据和输出要求有陷阱。首先,输入的时候要计较i和j的大小,然后不要忘了输出的时候也要换过来。这题除了暴力解决以外,还可以用到记忆化存储方法打表。这里有不水的解法 http://blog.youkuaiyun.com/xieshimao/article/details/6774759。
import java.util.Scanner; 

public class Main { 
	public static int getCycles(int m){
		int sum=0;
		 while(m!=1){
  		   if(m % 2==0){
  			   m=m / 2;
  			   sum++;
  		   }else{
  			   m=3*m+1;
  			   sum++;
  		   }
  	   }
		 return sum+1;
	}
    public static void main(String[] args) { 
       Scanner cin = new Scanner(System.in);
       int s,e,i;
       while(cin.hasNext()){
    	   s=cin.nextInt();
    	   e=cin.nextInt();
    	   boolean flag = false;
    	   if(s > e){
    		   int t=s;
    		   s=e;
    		   e=t;
    		   flag=true;
    	   }
    	   int max=Integer.MIN_VALUE;
    	   for(i=e;i>=s;i--){
    		  int sum=getCycles(i);
	    	  if(sum>max)
    			   max=sum;
    	   }
    	   if(flag){
    		   System.out.println(e+" "+s+" "+max);
    	   }else
    		   System.out.println(s+" "+e+" "+max);
        }
    } 
  } 


NYIST_2013寒假ACM集训队练习赛(2) 集训第二周周四,做出来了7道题目,题目非常水,还有几道没有A出来的也不难,完了花点时间水一下,a过的题目贴在这里。没有a的后面补上。 比赛链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=39441#overview 密码:nyist I - I Time Limit:1000MS     Memory Limit:32 阅读详情

相关推荐

博科的SAN交换机基本操作

2、添加用户testuser赋予user权限可以访问1-128VF默认VF为128账号描述"Test user"密码为password123。1、创建zone别名(100是指当前设备Domain ID,1和2是指对应的index号)2,删除新接入设备的ZONE或保持ZONE配置一致。3、将zone添加到当前生效的CFG中。2、将zone添加到当前生效的CFG中。3、将zone添加到当前生效的CFG中。3,将添加的级联端口持续关闭。4、将当前zone生效。4、将当前zone生效。1、查看当前所有用户。

chenjunokok的博客 1837

奇偶归一猜想(多组数据)——又称为3n+1猜想、冰雹猜想、角谷猜想

输入两个正整数a和b,输出二者之间所有数的奇偶归一猜想的验证过程。对于任意一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2,如此循环,最终都能够得到1。 例如整数7,它的变换过程为:22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1。

m0_64782700的博客 3142

基于Spring Boot框架的网上蛋糕销售系统

随着互联网的普及和电子商务的迅猛发展,网上购物已经成为人们日常生活的一部分。蛋糕作为一种受欢迎的食品,其销售市场也逐渐向网络化方向发展。网上蛋糕销售系统能够打破时间和地域的限制,让消费者随时随地浏览和购买蛋糕,同时也为蛋糕商家提供了一个展示和销售产品的平台。该系统的开发旨在提高蛋糕预定和销售的便捷性,节约时间和经济成本,并推动蛋糕市场的进一步发展。开发语言:Java,一种面向对象的编程语言,具有跨平台性、稳定性和安全性等特点,适用于构建大型、复杂的Web应用程序。 框架:Spring Boot,一个基于Sp

2301_81127431的博客 996

POJ-1207

The 3n + 1 problem Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 41880   Accepted: 13131 Description Problems in Computer Science are often classified as

x_liushi_game的专栏 576

详解Unity中的粒子系统Particle System (三)

上一篇我们详细讲解了有关主模块的全部内容,已经对粒子系统的基本运作有了足够的了解,本篇就来讲一下被粒子系统默认启用的Emission、Shape、Renderer模块又在粒子系统中扮演着怎么样的作用吧。

梦小天幼的博客 1万+

11n、11ac、11ax和11be MCS表(全网最全)

1、无线协商速率介绍及计算 2、附11n、11ac、11ax 完整MCS速率表

weixin_41500064的博客 2万+

奇偶归一猜想

奇偶归一猜想 奇偶归一猜想,又称为3n+1猜想,冰雹猜想,克拉茲问题,是指对于每一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2,如此循环,最终都能够得到1。 这里用python写了一个奇偶归一猜想程序。 x = [] def hailstone(n): if n == 1: x.append(1) return x ...

weixin_30487701的博客 1968

【MATLAB+VScode】VScode调试MATLAB代码的终极指南

本文详细介绍了在VScode中调试MATLAB代码的完整方案。通过配置MATLAB Engine for Python作为桥梁,实现在VScode中设置断点、单步执行、查看变量等交互式调试功能,有效结合了VScode的现代化编辑体验与MATLAB的强大计算内核,显著提升开发效率。

weixin_29161719的博客 412

POJ-1207 The 3n + 1 problem

一道水题,也是一道坑题。在这里记录下一个坑。 本来很简单,但是没考虑到i和j的大小不确定,所以得先判断大小,然后进行遍历。其实题上给的输入例子,都是 i&amp;amp;amp;lt;j,但是仔细看题上说明并没有说i和j谁大谁小。所以这里还是需要进行判断的 两个小技巧: 判断奇偶数的简单方法:n &amp;amp;amp;amp; 1 结果为 1 说明是奇数;否则为偶数 数遍历次数的话。要从0开始,别犯错误想当然从1开始。。 #incl...

sudo-wang的博客 330

4D毫米波雷达天线设计

多种天线布局方案介绍、天线设计要点介绍

5734

Agent Harness Engineering: AI Agent 执行管控与安全沙箱 原理与最佳实践

我们正站在计算范式转移的历史节点上。2024-2026 年间,AI 系统从被动的内容生成器(Generative AI)演变为主动的行动执行者(Agentic AI)。这一转变的根本特征是:根据 2026 年初的行业数据:然而,能力的提升伴随着风险的指数级增长。2024-2026 年间发生的多起标志性安全事件揭示了 Agent 系统的脆弱性:案例 1:Slack AI 数据外泄事件(2024 年 8 月)案例 2:制造业供应链攻击(2026 年 Q3)案例 3:Arup 深度诈骗案(2026 年 9 月)这

AI天才研究院 1669

POJ1207解题报告 Java

import java.util.Scanner; public class Main { public static int[] data=new int[10001]; /** * @param args */ public static void main(String[] args){ Scanner input=new Scanner(System.in); in

irencewh的专栏 822

osg点云加载与渲染

osg点云加载与渲染

cangqiongxiaoye的博客 821

ProjectEuler】14.Longest Collatz sequence 最长的Collatz序列 Java代码

求这种特殊序列的最大长度起始数 当n是偶数时,n的下一个数等于n/2 当n是奇数时,n的下一个数等于3*n+1 例如:13->40->20->10->5->16->4->2->1 虽然还没有得到证明,但我们认为任何一个数作为起点,都能最终得到1 求哪一个数作为起点,它能得到最长的序列(在一百万以内) 起点小于一百万,但是中间的数可以大于一百万 原题网址:https://projecteuler.net/problem=14 Java代码如下 .

weixin_44201353的博客 343

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

冰雹(3n+1)猜想一个不太成熟的小思路

【问题描述】 下面的算法段用于确定n的初始值。试分析该算法段所需计算时间的上界和下界。 ———————————————————— while(n&amp;gt;1) if(odd(n)) n=3*n+1; else n=n/2; ———————————————————— 【解题思路】 考虑到整个代码段中的主体是一个while循环并且循环中只有一个if-else语句。我们假定这里n的值都大于1,于是我们以这...

Ding_0110M的博客 4221

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

叙拉古猜想

从一个正整数开始,两人轮流进行如下运算: 若是奇数,就把这个数乘以3再加1;若是偶数,就把这个数除以2。这样演算下去,直到第一次得到1才算结束,首先得到1的获胜。 比如,要是从1开始,就可以得到1→4→2→1;要是从17开始,则可以得到17→52→26→13→40→20→10→5→16→8→4→2→1。 这个问题就是叙拉古猜想,也叫科拉兹猜想或角谷猜想。

sundujing的博客 1990

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

poj 1207

#include int main() { int i, j, maxi, max; while (scanf("%d%d", &i, &j)!=EOF) { int sma, lar; max = 0; if (i > j) { sma = j; lar = i; } else  { sma = i; lar = j; } for (int fla

qq_33178205的博客 273

北大Poj 1207

The 3n + 1 problem Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 61390   Accepted: 19469 Description Problems in Computer Science are often classified as belonging to ...

Maggie的博客 366

UVa 100 / HDU 1032 / POJ 1207 The 3n + 1 problem (数论&Collatz序列周期)

介绍: 这题说的是奇偶归一猜想(英语:Collatz conjecture),又称为3n+1猜想、冰雹猜想、角谷猜想、哈塞猜想、乌拉姆猜想或叙拉古猜想,是指对于每一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2,如此循环,最终都能够得到1。 注意: 1. 一开始我调试的时候发现用int会超数据,但直接用int交可以AC(这只能说明OJ上的测试数据没完善。。) 2. i可能大于j,一开始读题的时候就yy会不会出给这么变态的数据,没想到真的这样。。 3. 使用一个数组保存算过的数据,可减

AC,∑ndless 2331

POJ 1207 3n+1问题

描述考虑下列算法: 1. input n 2. print n 3. if n = 1 then STOP 4. if n is odd then n <- 3n+1 5. else n <- n/2 6. GOTO 2输入:22, 打印序列:22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 假设对于所有整数值,算法可终止(打印到1时

各种问题卡住我 480

3n+1猜想

3n+1猜想   输入一个大于1自然数n,若n为奇数,则将n变为3n+1,否则变为n的一半。经过若干次这样的变化,一定会使n变为1。   #include&lt;stdio.h&gt; #include&lt;math.h&gt; int main(){ int n, count = 0; scanf("%d",&amp;n); while(n &gt; 1){ ...

wsnjczw的专栏 2477

C++ ACM解题

部分解题报告添加新内容,除了原有的“大致题意”和“解题思路”外, 新增“Source修正”,因为原Source较模糊,这是为了帮助某些狂WA的同学找到测试数据库,但是我不希望大家利用测试数据打表刷题   PS:部分题目的评论中也有给出了测试数据,未必完全,仅供参考 这个POJ分类版本是被我修改过的,现在还在根据我做的题在逐步修改中 有部分题目的分类不合理,所以根据我个人做题的心得对其...

weixin_33805992的博客 629
上一篇: Poj1159 Palindrome(动态规划DP求最大公共子序列LCS)
下一篇: POJ 2017 No Brainer(超级水题)
TaiSung
博客等级 码龄15年 49粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值