72 lines
1.6 KiB
C#
72 lines
1.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Program
|
|
{
|
|
class Sorozat
|
|
{
|
|
public int KezdoErtek;
|
|
|
|
public List<int> Tagok = new List<int>();
|
|
|
|
int[] kettoHatvanyok = new int[] { 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608 };
|
|
|
|
public int TagokKiszamitasa(int ertek)
|
|
{
|
|
int ujertek;
|
|
|
|
if (kettoHatvanyok.Contains(ertek))
|
|
{
|
|
int index = 0;
|
|
while (kettoHatvanyok[index] != ertek)
|
|
{
|
|
index++;
|
|
}
|
|
|
|
KettoHatvanyokTagokHozzaAdasa(index);
|
|
|
|
return 1;
|
|
}
|
|
|
|
if (ertek == 1) {
|
|
Tagok.Add(ertek);
|
|
return 1;
|
|
}
|
|
|
|
if (ertek % 2 == 0)
|
|
{
|
|
ujertek = ertek / 2;
|
|
|
|
} else
|
|
{
|
|
ujertek = ertek * 3 + 1;
|
|
}
|
|
|
|
Tagok.Add(ertek);
|
|
return TagokKiszamitasa(ujertek);
|
|
}
|
|
|
|
public void KettoHatvanyokTagokHozzaAdasa(int index)
|
|
{
|
|
for (int i = index; i >= 0; i--)
|
|
{
|
|
Tagok.Add(kettoHatvanyok[i]);
|
|
}
|
|
}
|
|
|
|
public Sorozat(Sorozat sorozat)
|
|
{
|
|
KezdoErtek = sorozat.KezdoErtek;
|
|
Tagok = sorozat.Tagok;
|
|
}
|
|
|
|
public Sorozat(int kezdoErtek)
|
|
{
|
|
this.KezdoErtek = kezdoErtek;
|
|
}
|
|
}
|
|
}
|