Extended 10. * Data Overflow
Здравейте, искам да попитам относно логиката на закръгляне в задачата DataOverflow? Долу давам двата нулеви теста от задачата.
 
bigger type: ushort
smaller type: byte
1200 can overflow byte 5 times
bigger type: uint
smaller type: byte
100000 can overflow byte 392 times
Ако прием, че стойността на 1 byte=255
1200/255=4.70588235294
1000000/255=392.156862745
Ако приемем, че в задачата броим само пълните overflow-ли, т.е.закръгляме надолу, отговорите биха били => 4 и 392 (с това решение резултата е 30/100), недоволен от резултата, реших да си поиграя със закръглянията, в следствие на което открих, че с Math.Ceil резултата ми достига 70/100, а с Math.Round 90/100. Това е кода ми, ще съм благодарен, ако някой ми обясни правилната логика за решаване на тази задача, а не само да ми даде вярно решение :).
Благодаря предварително.
using System;
namespace extended3._10._1
{
    class Program
    {
        static void Main()
        {
            var first = decimal.Parse(Console.ReadLine());
            var second = decimal.Parse(Console.ReadLine());
            var smaller = Math.Min(first, second);
            var bigger = Math.Max(first, second);
            Console.WriteLine("bigger type: " + numType(bigger));
            Console.WriteLine("smaller type: " + numType(smaller));
            var smallerType = numType(smaller);
            decimal overflowCount = 0;
            switch (smallerType)
            {
                case "byte":
                    overflowCount = bigger / byte.MaxValue;
                    break;
                case "ushort":
                    overflowCount = bigger / ushort.MaxValue;
                    break;
                case "uint":
                    overflowCount = bigger / uint.MaxValue;
                    break;
                default:
                    overflowCount = 0;
                    break;
            }
            Console.WriteLine($"{bigger} can overflow {numType(smaller)} {Math.Round(overflowCount,MidpointRounding.ToEven)} times");
        }
        private static string numType(decimal v)
        {
            return byte.MaxValue>=v?"byte":ushort.MaxValue>=v?"ushort":uint.MaxValue>=v?"uint":"ulong";
            
        }
    }
}