public static bool IsPandigital(int n) { if (n > 1000000000) { return(false); } int[] nums = MiscFunctions.DigitsFromInt(n); int[] dig = new int[nums.Length]; for (int i = 0; i < dig.Length; i++) { dig[i] = i + 1; } return(nums.OrderBy(x => x).ToArray().SequenceEqual(dig)); }
public static List <int> rotations(int n) { List <int> rots = new List <int>(); List <int> startingint = MiscFunctions.DigitsFromInt(n).ToList(); rots.Add(n); for (int i = 1; i < startingint.Count; i++) { startingint.Add(startingint[0]); startingint.RemoveAt(0); rots.Add(MiscFunctions.ListToInt(startingint)); } return(rots); }
public static int DigitFifthPowers(int n) { List <int> digits = new List <int>(); int limit = (int)Math.Pow(10, n) * 100; for (int i = 2; i < limit; i++) { int[] arr = MiscFunctions.DigitsFromInt(i); if (PowerSum(arr, n) == i) { digits.Add(i); } } return(digits.Sum()); }
public static double CancelOutSameDigit(int a, int b) { List <int> digitsa = MiscFunctions.DigitsFromInt(a).ToList(); List <int> digitsb = MiscFunctions.DigitsFromInt(b).ToList(); List <int> intersect = digitsa.Intersect(digitsb).ToList(); if (intersect.Count == 1) { digitsa.Remove(intersect[0]); digitsb.Remove(intersect[0]); if (digitsb[0] != 0) { return((double)digitsa[0] / (double)digitsb[0]); } } return(0); }
public static int DigitFactorials(int n) { int sum = 0; CombinatoricFunctions.generatefactorial(10); for (int i = 3; i < n; i++) { int[] digits = MiscFunctions.DigitsFromInt(i); BigInteger tempsum = 0; foreach (int digit in digits) { tempsum += CombinatoricFunctions.factorial(digit); } if (tempsum == i) { sum += i; } } return(sum); }
public static int PandigitalProducts() { HashSet <int> products = new HashSet <int>(); for (int i = 1; i < 5000; i++) { for (int j = 1; j < 5000; j++) { List <int> tempdigits = new List <int>(); tempdigits.AddRange(MiscFunctions.DigitsFromInt(i)); tempdigits.AddRange(MiscFunctions.DigitsFromInt(j)); tempdigits.AddRange(MiscFunctions.DigitsFromInt(i * j)); if (MiscFunctions.IsPandigital(tempdigits)) { products.Add(i * j); } } } return(products.Sum()); }