Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C++
I submit my answer in Programming Challenges Judge(here http://www.programming-challenges.com[^]).I think my code of my is correct,but it show the result that is Answer Wrong.
Here is the code:
// 3n+1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
 
//declare function for calculate number of sequence of numbers
unsigned int NumOfSquence(unsigned int n);
 
int _tmain(int argc, _TCHAR* argv[])
{
	unsigned int i = 1,j = 1,temp = 0; 
	cin>>i>>j;
	//switch i and j,if(i > j)
	if(i > j){
	        temp = i;
	        i = j;
		j = temp;
	}
	unsigned int max = NumOfSquence(i);
	for(unsigned int k = i + 1;k <= j; k++){
		temp = NumOfSquence(k);
		if(temp > max){
			max = temp;
		}
	}
	cout<<i<<" "<<j<<" "<<max<<endl;
	return 0;
}
 
//the function of calculate number of sequence of numbers,whilch begins with n
// 16 8 4 2 1
unsigned int NumOfSquence(unsigned int n){
	unsigned int num = 1;
	while(n != 1){
		if(n % 2 == 0){
			n /=2;
		}
		else if(n % 2 == 1){
			n = 3 * n + 1;
		}
		num++;
	}
	return num;
}
Posted 14-Nov-12 2:06am
Edited 14-Nov-12 2:51am
v2
Comments
Legor at 14-Nov-12 9:28am
   
Is there any actual question related to this ?
MLOVEternity at 15-Nov-12 10:23am
   
Here is the problem :
http://acm.uva.es/p/v1/100.html[^]
MLOVEternity at 15-Nov-12 10:08am
   
@Jacques Loubser
This is an algorithmic problem in book,Programming challenges.It don't just calculate the answer of (3n + 1).
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

Hi
 
Why must it be so complicated?
 
3n + 1 = (3 * n)+1
 
unsigned int n = 0;
unsigned int output = 0;
output=( 3 * n ) + 1 ;
  Permalink  
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 2

It seems from your code that you're trying find the longest sequence of steps for a Collatz conjecture[^] between 2 initial numbers.
 
In the function 'NumOfSquence' you should start from num = 0 instead of num = 1 to count the number of steps instead of the number values.
 
I hope this helps.
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



Advertise | Privacy | Mobile
Web02 | 2.8.140709.1 | Last Updated 14 Nov 2012
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid