Moderator: Board moderators
#include <iostream>
#include <algorithm>
using namespace std;
unsigned long int calc(unsigned long int val){
int counter=1;
while(val!=1){
if(val%2==0){
val=val/2;
counter++;
}
else{
val=val * 3 +1;
counter++;
}
}
return counter;
}
int main() {
unsigned long int start, startCount, end, endCount, maxCount;
while(cin>> start >> end){
startCount=start;
endCount = end;
unsigned long int maxNum=max(start, end);
unsigned long int minNum=min(start, end);
maxCount = calc(minNum);
while(minNum != maxNum){
maxCount = max(maxCount, calc(minNum));
++minNum;
}
cout << startCount << " " << endCount << " " << maxCount << endl;
}
return 0;
}
helloneo wrote:minNum != maxNum
should be
minNum <= maxNum
#include <stdio.h>
long maxCicles(long num);
int main() {
long num1;
long num2;
long lowNum, bigNum;
long maxNum = 0;
int i;
long currNum = 0;
while (scanf("%ld", &num1) != EOF)
{
scanf("%ld", &num2);
if (num1 > num2)
{
bigNum = num1;
lowNum = num2;
}
else
{
bigNum = num2;
lowNum = num1;
}
for (i = lowNum; i<=bigNum; i++)
{
currNum = maxCicles(i);
if (currNum > maxNum)
{
maxNum = currNum;
}
}
printf("%ld ",num1);
printf("%ld ",num2);
printf("%ld", maxNum);
printf("\n");
}
return 0;
}
long maxCicles(long num)
{
long count = 1;
long n = num;
while (n != 1)
{
if (n % 2 != 0)
{
n = (3*n)+1;
}
else
{
n = n / 2;
}
count++;
}
return count;
}#include <iostream>
using std::cin;
using std::cout;
void scambio(int &n, int &m)
{
int temp;
temp=m;
m=n;
n=temp;
}
int main()
{
int a,b;
int max,length,num;
while (cin >> a >> b)
{
max=0;
if (a>b)
scambio(a,b);
for (int i=a;i<=b;i++)
{
num=i;
length=1;
while (num!=1)
{
if (num%2==0)
num/=2;
else
//(num*=3)++;
num=num*3+1;
length++;
}
if (max < length)
max = length;
}
cout << a << " " << b << " " << max << "\n";
}
return 0;
}1 10
10 11 10 20
10 1 20brianfry713 wrote:Input:Correct output:
- Code: Select all
1 10
10 1You can use swap(), but it won't fix your issue in this problem.
- Code: Select all
1 10 20
10 1 20
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
void scambio(int &n, int &m)
{
int temp;
temp=m;
m=n;
n=temp;
}
int main()
{
int a,b;
int max,length,num;
bool order=0;
while (cin >> a >> b)
{
max=0;
if (a>b)
{
scambio(a,b);
order=1;
}
for (int i=a;i<=b;i++)
{
num=i;
length=1;
while (num!=1)
{
if (num%2==0)
num/=2;
else
//(num*=3)++;
num=num*3+1;
length++;
}
if (max < length)
max = length;
}
if (order)
scambio(a,b);
cout << a << " " << b << " " << max << endl;
}
return 0;
}1 10
10 11 10 20
10 1 201 10
10 11 10 20
1 10 2010 1
1 101 10
100 200
201 210
900 1000
1000 900
999999 999990
1 10 20
100 200 125
201 210 89
900 1000 174
1000 900 174
999999 999990 259Users browsing this forum: No registered users and 1 guest