`
hellobin
  • 浏览: 65862 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

UVA 694 - The Collatz Sequence

    博客分类:
  • UVA
 
阅读更多

 

An algorithm given by Lothar Collatz produces sequences of integers, and is described as follows:

Step 1:
Choose an arbitrary positive integerAas the first item in the sequence.
Step 2:
IfA= 1 then stop.
Step 3:
IfAis even, then replaceAbyA/ 2 and go to step 2.
Step 4:
IfAis odd, then replaceAby 3 *A+ 1 and go to step 2.

It has been shown that this algorithm will always stop (in step 2) for initial values ofAas large as 109, but some values ofAencountered in the sequence may exceed the size of an integer on many computers. In this problem we want to determine the length of the sequence that includes all values produced until either the algorithm stops (in step 2), or a value larger than some specified limit would be produced (in step 4).

 

Input

The input for this problem consists of multiple test cases. For each case, the input contains a single line with two positive integers, the first giving the initial value ofA(for step 1) and the second givingL, the limiting value for terms in the sequence. Neither of these,AorL, is larger than 2,147,483,647 (the largest value that can be stored in a 32-bit signed integer). The initial value ofAis always less thanL. A line that contains two negative integers follows the last case.

 

Output

For each input case display the case number (sequentially numbered starting with 1), a colon, the initial value forA, the limiting valueL, and the number of terms computed.

 

Sample Input

 

 3 100
 34 100
 75 250
 27 2147483647
 101 304
 101 303
 -1 -1

 

Sample Output

 Case 1: A = 3, limit = 100, number of terms = 8
 Case 2: A = 34, limit = 100, number of terms = 14
 Case 3: A = 75, limit = 250, number of terms = 3
 Case 4: A = 27, limit = 2147483647, number of terms = 112
 Case 5: A = 101, limit = 304, number of terms = 26
 Case 6: A = 101, limit = 303, number of terms = 1

 

 

 

#define RUN
#ifdef RUN

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <string>
#include <iostream>
#include <sstream>
#include <map>
#include <set>
#include <vector>
#include <list>
#include <cctype> 
#include <algorithm>
#include <utility>
#include <math.h>

using namespace std;

#define MAXN 105

long long A, limit;
int cnt;
int casenum = 1;

void play(int casenum){
	cnt = 1;

	long long aA = A;

	while(true){
		if(aA == 1){
			printf("Case %d: A = %lld, limit = %lld, number of terms = %d\n", casenum, A, limit, cnt);
			return;
		}

		if(aA%2 == 0){
			aA = aA/2;
		}
		else{
			aA = 3*aA + 1;
		}

		if(aA > limit){
			printf("Case %d: A = %lld, limit = %lld, number of terms = %d\n", casenum, A, limit, cnt);
			return;
		}

		++cnt;
	}

	
}


int main(){

#ifndef ONLINE_JUDGE
	freopen("694.in", "r", stdin);
	freopen("694.out", "w", stdout); 
#endif


	while(scanf("%lld%lld", &A, &limit)==2 && A!=-1 && limit!=-1){
		play(casenum);
		++casenum;
	}


}


#endif



 

 

 

分享到:
评论

相关推荐

    zurihac15-talk-examples:Cloud Haskell上Zurihac'15演讲的同伴代码

    stack exec -- collatz slave localhost 7001 & stack exec -- collatz slave localhost 7002 & stack exec -- collatz master localhost 7000 或使用提供的launch.sh脚本。 主机将在终端上等待,直到您按下RETURN...

    project-euler-collatz-nyc-web-051319

    欧拉·科拉兹(Euler Collat​​z)项目Collat​​z问题为正整数的集合定义了以下迭代序列: n→n / 2(n为偶数) n→3n + 1(n为奇数) ...,该方法将n到1的Collat​​z序列返回编写方法longest_collatz ,该方法返回

    欧拉公式求圆周率的matlab代码-project-euler-collatz-online-web-sp-000:项目euler-colla

    在数组中编写一个方法collatz(n) ,该方法将n到1的Collat​​z序列返回 编写方法longest_collatz ,该方法返回小于一百万的起始数字,该方法返回最长的序列 运行learn直到所有RSpec测试通过。 来源 -- 在Learn.co上...

    欧拉公式求圆周率的matlab代码-project-euler-collatz-q-000:项目Euler-Collat​​z-q-000

    在数组中编写一个方法collatz(n) ,该方法将n到1的Collat​​z序列返回 编写方法longest_collatz ,该方法返回小于一百万的起始数字,该方法返回最长的序列 运行learn直到所有RSpec测试通过。 来源 --

    欧拉公式求圆周率的matlab代码-project-euler-collatz-e-000:项目Euler-Collat​​z-e-000

    在数组中编写一个方法collatz(n) ,该方法将n到1的Collat​​z序列返回 编写方法longest_collatz ,该方法返回小于一百万的起始数字,该方法返回最长的序列 运行learn直到所有RSpec测试通过。 来源 --

    cs371p-collatz:p1

    【压缩包子文件的文件名称列表】中的 "cs371p-collatz-master" 可能是一个Git仓库的名称,表明这个项目可能托管在GitHub等版本控制系统上。"master"分支通常代表项目的主分支,包含最新的、经过验证的代码。在实际的...

    Collatz 序列、逗号代码、字符图网格实例

    1.collatz序列 编写一个名为 collatz()的函数,它 有一个名为 number 的参数。如果参数是偶数, 那么 collatz()就打印出 number // 2,并返回该值。如果 number 是奇数,collatz()就打 印并返回 3 * number + 1。 ...

    cs371p-collatz:cs371p 项目 1

    "cs371p-collatz-master" 暗示这是一个 GitHub 仓库的主分支,通常包含项目的源代码、文档和其他资源。在实际的项目文件中,可能会有以下内容: 1. `README.md`: 项目介绍、安装指南和使用说明。 2. `index.js` 或...

    cs371p-collatz:CS371p 的项目#1

    在文件名称列表中,我们看到 "cs371p-collatz-master",这通常表示这是一个Git仓库的主分支,可能包含了项目的源代码、文档、测试用例以及其他相关资源。学生在开始项目时,可能会克隆这个仓库到本地,然后在此基础...

    POJ1207-The 3n + 1 problem

    《POJ1207-The 3n + 1 problem》是北京大学在线编程平台POJ上的一道经典算法题目,其主要涉及的知识点是数论和动态规划。本题目的核心是解决著名的“Collatz Conjecture”问题,也被称为“3n+1猜想”。 3n+1猜想是...

    An_Automated_Approach_to_the_Collatz_Conjecture.pdf

    《自动求解Collatz猜想的方法》 这篇论文深入探讨了Collatz猜想,并通过字符串重写系统的视角来研究其变种。Collatz猜想,也被称为3x+1问题,是一个未解决的数学问题,涉及到整数的迭代操作。作者Emre Yolcu和Scott...

    collatz.pdf

    该代码定义了一个名为`collatz_sequence`的函数,该函数将输入的数字`n`作为参数,并生成一个Collatz序列。该序列将继续生成,直到达到1为止。 Collatz猜想是一个非常重要的数学问题,具有非常广泛的应用前景和研究...

    Collatz-Conjecture:无人能解的最简单数学问题的直观表示。 (3N+1 问题)

    考拉兹猜想 无人能解的最简单数学问题的直观表示。 (3N+1 问题) 又名3N+1问题。 臭名昭著的 Collat​​z 猜想说,如果您从任何正整数开始,您将始终以这个循环结束。 结果,在某些时候,最终会出现在4,2,1的循环...

    collatz_visualization-源码.rar

    《Collatz可视化程序的源码解析》 Collatz序列,又称3n+1问题或哈斯勒·朗兰兹序列,是一个有趣的数学游戏,源于美国数学家Lothar Collatz在1937年提出的一个猜想。这个猜想是:对于任何正整数n,按照以下规则操作...

    Collatz:检查 Collat​​z 序列的工具。-matlab开发

    fprintf('Collatz sequence starting from %d:\n', n); disp(seq); % 或者使用plot等函数在图形窗口展示序列 end ``` 3. **分析Collatz序列**: - 第三个文件,比如`analyze_seq.m`,可能会包含更复杂的统计...

    train-the-3n-1-problem-100-diego-cs:train-the-3n-1-problem-100-diego-cs,由GitHub Classroom创建

    在这个项目“train-the-3n-1-problem-100-diego-cs”中,Diego使用C++语言实现了对这个问题的编程求解。 首先,我们来理解3N+1问题的基本规则:对于任何正整数n,如果它是偶数,则将其除以2;如果它是奇数,则将其...

    C 代码 通过考虑 简单的 Collatz 3n+1 问题.rar

    《深入解析Collatz 3n+1问题:C与C++实现》 Collatz 3n+1问题,又称Collatz序列或哈塞程序,是一个简单的数学猜想,它涉及到整数序列的操作。这个猜想由Lothar Collatz于1937年提出,至今未被证明或否定。它的规则...

    AC-学号-姓名- 题号10011

    在这个代码中,`collatz_sequence`函数接收一个正整数n作为参数,然后在while循环中执行卡拉兹猜想的操作。每次操作后,步数steps增加1,直到n变为1,函数返回步数。对于给定的输入样例,当n=3时,经过5步操作(3 -&gt;...

    Python Collatz序列实现过程解析

    **Python Collatz序列实现过程解析** Collatz序列,也称为3n+1序列或Hasse图,是一个在数学上颇有趣味的序列。这个序列基于一个简单规则:从任意正整数开始,如果该数是偶数,则将其除以2;如果该数是奇数,则将其...

Global site tag (gtag.js) - Google Analytics