## 371 - Ackermann Functions

Moderator: Board moderators

sohel
Guru
Posts: 856
Joined: Thu Jan 30, 2003 5:50 am
Location: New York
hello-

when printing:
Between x and y, a generates the longest sequence of b values.

you have to make sure x <= y.

so for input:
20 1

output should be:
Between 1 and 20, 18 generates the longest sequence of 20 values.

and not:
Between 20 and 1, 18 generates the longest sequence of 20 values.

hope it helps.

BTW: other threads already exists about this problem. I assume you are new in this forum... you can search for a particular problem by using the 'search' option. If you don't get the required help, then make a post in that thread.

Iffat
New poster
Posts: 25
Joined: Sat Jul 22, 2006 9:47 am
thanx a lot.... i get AC

sobuz
New poster
Posts: 4
Joined: Mon Aug 21, 2006 2:41 pm

### 371 why wa

#include<stdio.h>
int main()
{
unsigned long int n,i,count=0,j,k,large=0,w;
do
{
scanf("%lu %lu",&n,&k);
if(n==0&&k==0)
exit(1);
for(j=n;j<=k;j++)
{
i=j;
do
{
if(i%2!=0)
i=3*i+1;
else
i=i/2;
count++;

}while(i!=1);

if(large<count){
w=j;
large=count;
}
count=0;
}

printf("Between %lu and %lu, %lu generates the longest sequence of %lu values.\n",n,k,w,large);

large=0;
}while(n!=0&&k!=0);
return 0;
}

emotional blind
A great helper
Posts: 383
Joined: Mon Oct 18, 2004 8:25 am
Contact:
First number may be greater than Second one in some pair... so consider it..
Just insert This line after scanf()

Code: Select all

``if(n>k){i=n;n=k;k=i;}``
And you will get Accepted.
Keep Posting.

albet_januar
New poster
Posts: 35
Joined: Wed Apr 12, 2006 6:03 pm
Location: jakarta, indonesia
Contact:
can anybody help me to do check my code..??
why it can get WA..

Code: Select all

``````deleted after acc..
}
``````
thx
Last edited by albet_januar on Thu Nov 16, 2006 12:17 pm, edited 1 time in total.

Jan
Guru
Posts: 1334
Joined: Wed Jun 22, 2005 10:58 pm
Contact:
Suppose you are told to print 'abc', if you print 'cba' or 'bca' then you will get WA.
Ami ekhono shopno dekhi...
HomePage

albet_januar
New poster
Posts: 35
Joined: Wed Apr 12, 2006 6:03 pm
Location: jakarta, indonesia
Contact:
4 jan :
i don't really understand with ur explanation.. bcos im not good in english..
can u give a clearer explanation?

thx b4

Jan
Guru
Posts: 1334
Joined: Wed Jun 22, 2005 10:58 pm
Contact:
You are not printing correctly. Your code doesnot even pass the sample. Just match both outputs carefully and you will find your error.
Ami ekhono shopno dekhi...
HomePage

albet_januar
New poster
Posts: 35
Joined: Wed Apr 12, 2006 6:03 pm
Location: jakarta, indonesia
Contact:
albet_januar wrote:can anybody help me to do check my code..??
why it can get WA..

Code: Select all

``````deleted after ACC..
``````
thx

newton
Experienced poster
Posts: 162
Joined: Thu Jul 13, 2006 7:07 am
Contact:

Code: Select all

``````
Accepted so deleted

``````

thanks.
Last edited by newton on Tue Feb 20, 2007 3:15 pm, edited 2 times in total.

rio
A great helper
Posts: 385
Joined: Thu Sep 21, 2006 5:01 pm
Location: Kyoto, Japan
The largest value in the sequence will not be larger than can be accomodated in a 32-bit Pascal LongInt or C long
The "sequence" means the numbers between L and H.
It doesn't say that i * 3 + 1 fits in long.

After fixing this point, you will get WA.
There are some point to fix in your code.

newton
Experienced poster
Posts: 162
Joined: Thu Jul 13, 2006 7:07 am
Contact:
hmm

Code: Select all

``````                    but if it is 00.627 sec?

``````

newton................................ simply the best

lena
New poster
Posts: 28
Joined: Mon Mar 05, 2007 5:44 pm

### 371Wa ~~~~ Help ~~~~

#include<stdio.h>
#include<iostream>
using namespace std;
long long int l,h;
long long ark(long long x)
{
unsigned long long a=x;
long long res = 0;
while(a!=1)
{
res++;
if(a%2==0)a/=2;
else a= 3*a+1;
}
return res;
}
int main()
{
while(cin>>l>>h,l!=0 || h!=0)
{
long long i;
if(l>h){i =l;l = h;h= i;}
if(l<=0)break;
long long res = ark(l);
long long resp = l;
long long t;
for(i=l+1;i<=h;i++)
{
t = ark(i);
if(t>res)
{
res = t;
resp = i;
}
}
printf("Between %lld and %lld, %lld generates the longest sequence of %lld values.\n",l,h,resp,res);
}
return 0;
}

helloneo
Guru
Posts: 516
Joined: Mon Jul 04, 2005 6:30 am
Location: Seoul, Korea