Esempio n. 1
0
        public void NumeralShouldGetDigits()
        {
            #region Arrange
            var ulongNum      = 29382440;
            var bigIntegerNum = new BigInteger(43653452598);
            #endregion
            #region Act
            var ulongDigits      = Numeral.GetDigits(ulongNum);
            var bigIntegerDigits = Numeral.GetDigits(bigIntegerNum);
            #endregion
            #region Assert
            Assert.AreEqual(8, ulongDigits.Count);
            Assert.AreEqual(0, ulongDigits[0]);
            Assert.AreEqual(4, ulongDigits[1]);
            Assert.AreEqual(4, ulongDigits[2]);
            Assert.AreEqual(2, ulongDigits[3]);
            Assert.AreEqual(2, ulongDigits[7]);

            Assert.AreEqual(11, bigIntegerDigits.Count);
            Assert.AreEqual(8, bigIntegerDigits[0]);
            Assert.AreEqual(9, bigIntegerDigits[1]);
            Assert.AreEqual(6, bigIntegerDigits[8]);
            Assert.AreEqual(3, bigIntegerDigits[9]);
            Assert.AreEqual(4, bigIntegerDigits[10]);
            #endregion
        }
Esempio n. 2
0
            public static void Run(Input input, Output output)
            {
                var meta = input.ReadLine().Split(' ');
                var N    = int.Parse(meta[0]);
                var K    = int.Parse(meta[1]);

                var cubesPermutations =
                    new Dictionary <CubePermutationKey, CubePermutationData>();

                for (long i = 1; i < N; i++)
                {
                    long cube = i * i * i;

                    var cubeDigits = Numeral.GetDigits((ulong)cube);

                    var currKey = new CubePermutationKey();
                    for (int currDigitIndex = 0; currDigitIndex < cubeDigits.Count; currDigitIndex++)
                    {
                        currKey.Digits[cubeDigits[currDigitIndex]]++;
                    }
                    currKey.InitHash();
                    if (!cubesPermutations.ContainsKey(currKey))
                    {
                        cubesPermutations.Add(currKey, new CubePermutationData()
                        {
                            Smallest = cube, Count = 1
                        });
                    }
                    else
                    {
                        cubesPermutations[currKey].Count++;
                    }
                }

                foreach (var val in cubesPermutations.Values)
                {
                    if (val.Count == K)
                    {
                        output.WriteLine(val.Smallest.ToString());
                    }
                }
            }