using
System;
using
System.Collections.Generic;
class
GFG {
static
int
collatzLenUtil(
int
n, Dictionary<
int
,
int
> collLenMap)
{
if
(collLenMap.ContainsKey(n))
return
collLenMap[n];
if
(n == 1)
collLenMap.Add(n, 1);
else
if
(n % 2 == 0) {
collLenMap.Add(
n, 1 + collatzLenUtil(n / 2, collLenMap));
}
else
{
collLenMap.Add(
n,
1 + collatzLenUtil(3 * n + 1, collLenMap));
}
return
collLenMap[n];
}
static
int
[] collatzLen(
int
n)
{
Dictionary<
int
,
int
> collLenMap
=
new
Dictionary<
int
,
int
>();
collatzLenUtil(n, collLenMap);
int
num = -1, l = 0;
for
(
int
i = 1; i < n; i++) {
if
(collLenMap.ContainsKey(i) ==
false
)
collatzLenUtil(i, collLenMap);
int
cLen = collLenMap[i];
if
(l < cLen) {
l = cLen;
num = i;
}
}
int
[] res = { num, l };
return
res;
}
public
static
void
Main(
string
[] args)
{
Console.WriteLine(
"("
+ collatzLen(10)[0] +
", "
+ collatzLen(10)[1] +
")"
);
}
}