using System.Collections.Generic;
static void Main(string[] args)
BigInteger inicio = BigInteger.Parse("10000");
BigInteger fin = BigInteger.Parse("40000");
BigInteger memo = BigInteger.Parse("0");
List<BigInteger> numeros = GenerarNumeros(inicio, fin);
Console.WriteLine("Lista de números y sus inversos:");
foreach (BigInteger numero in numeros)
Console.WriteLine(numero);
static List<BigInteger> GenerarNumeros(BigInteger inicio, BigInteger fin)
List<BigInteger> numeros = new List<BigInteger>();
BigInteger incremento = BigInteger.Parse("1");
for (BigInteger i = inicio; i <= fin; i += incremento)
string numberString = i.ToString();
int length = numberString.Length;
for (int i0 = 0; i0 < length; i0++) {
char firstDigit = numberString[0];
numberString = numberString.Substring(1) + firstDigit;
BigInteger number = BigInteger.Parse(numberString);
if (!numeros.Contains(number) && number <= fin && number >= inicio)
if (number.ToString().Equals(i.ToString())){
Console.WriteLine($"numero: {number} {incremento} {i.ToString()}");
Console.WriteLine($"reverso: {number} {incremento} {i.ToString()}");