using System.Text.RegularExpressions;
public static void Main()
Console.WriteLine(ValidarCUI("2780042101901").ToString());
private static bool ValidarCUI(string CUI)
string ExpresionCUI = "[0-9]{13}";
if (new Regex(ExpresionCUI).IsMatch(CUI))
int[] stateCityCounts = new int[]
string CUINumero = CUI.Substring(0, 8);
string CUIMunicipio = CUI.Substring(8, 1);
string CUIDepartamento = CUI.Substring(9, 2);
string CUICiudad = CUI.Substring(11, 2);
int Ciudad = int.Parse(CUICiudad);
int Departamento = int.Parse(CUIDepartamento);
int Municipio = int.Parse(CUIMunicipio);
if (Ciudad == 0 || Departamento == 0)
if (Departamento > stateCityCounts.Length || Ciudad > stateCityCounts.Max())
if (Ciudad > stateCityCounts[Departamento - 1])
for (int i = 0; i < CUINumero.Length; i++)
Total += CUINumero[i] * (i + 2);
int Modulo = (Total % 11);
Valido = Municipio == Modulo;