using System.Collections.Generic;
static void Main(string[] args)
var ranges = new List<Tuple<BigInteger, BigInteger, BigInteger>>()
new Tuple<BigInteger, BigInteger, BigInteger>(1, 1, 1),
new Tuple<BigInteger, BigInteger, BigInteger>(2, 3, 3),
new Tuple<BigInteger, BigInteger, BigInteger>(4, 7, 7),
new Tuple<BigInteger, BigInteger, BigInteger>(8, 15, 8),
new Tuple<BigInteger, BigInteger, BigInteger>(16, 31, 21),
new Tuple<BigInteger, BigInteger, BigInteger>(32, 63, 49),
new Tuple<BigInteger, BigInteger, BigInteger>(64, 127, 76),
new Tuple<BigInteger, BigInteger, BigInteger>(128, 255, 224),
new Tuple<BigInteger, BigInteger, BigInteger>(256, 511, 467),
new Tuple<BigInteger, BigInteger, BigInteger>(512, 1023, 514),
new Tuple<BigInteger, BigInteger, BigInteger>(1024, 2047, 1155),
new Tuple<BigInteger, BigInteger, BigInteger>(2048, 4095, 2683),
new Tuple<BigInteger, BigInteger, BigInteger>(4096, 8191, 5216),
new Tuple<BigInteger, BigInteger, BigInteger>(8192, 16383, 10544),
new Tuple<BigInteger, BigInteger, BigInteger>(16384, 32767, 26867),
new Tuple<BigInteger, BigInteger, BigInteger>(32768, 65535, 51510),
new Tuple<BigInteger, BigInteger, BigInteger>(65536, 131071, 95823),
new Tuple<BigInteger, BigInteger, BigInteger>(131072, 262143, 198669),
new Tuple<BigInteger, BigInteger, BigInteger>(262144, 524287, 357535),
new Tuple<BigInteger, BigInteger, BigInteger>(524288, 1048575, 863317),
new Tuple<BigInteger, BigInteger, BigInteger>(1048576, 2097151, 1811764),
new Tuple<BigInteger, BigInteger, BigInteger>(2097152, 4194303, 3007503),
new Tuple<BigInteger, BigInteger, BigInteger>(4194304, 8388607, 5598802),
new Tuple<BigInteger, BigInteger, BigInteger>(8388608, 16777215, 14428676),
new Tuple<BigInteger, BigInteger, BigInteger>(16777216, 33554431, 33185509),
new Tuple<BigInteger, BigInteger, BigInteger>(33554432, 67108863, 54538862),
new Tuple<BigInteger, BigInteger, BigInteger>(67108864, 134217727, 111949941),
new Tuple<BigInteger, BigInteger, BigInteger>(134217728, 268435455, 227634408),
new Tuple<BigInteger, BigInteger, BigInteger>(268435456, 536870911, 400708894),
new Tuple<BigInteger, BigInteger, BigInteger>(536870912, 1073741823, 1033162084),
new Tuple<BigInteger, BigInteger, BigInteger>(1073741824, 2147483647, 2102388551),
new Tuple<BigInteger, BigInteger, BigInteger>(2147483648, 4294967295, 3093472814),
new Tuple<BigInteger, BigInteger, BigInteger>(4294967296, 8589934591, 7137437912),
new Tuple<BigInteger, BigInteger, BigInteger>(8589934592, 17179869183, 14133072157),
new Tuple<BigInteger, BigInteger, BigInteger>(17179869184, 34359738367, 20112871792),
new Tuple<BigInteger, BigInteger, BigInteger>(34359738368, 68719476735, 42387769980),
new Tuple<BigInteger, BigInteger, BigInteger>(68719476736, 137438953471, 100251560595),
new Tuple<BigInteger, BigInteger, BigInteger>(137438953472, 274877906943, 146971536592),
new Tuple<BigInteger, BigInteger, BigInteger>(274877906944, 549755813887, 323724968937),
new Tuple<BigInteger, BigInteger, BigInteger>(549755813888, 1099511627775, 1003651412950),
new Tuple<BigInteger, BigInteger, BigInteger>(1099511627776, 2199023255551, 1458252205147),
new Tuple<BigInteger, BigInteger, BigInteger>(2199023255552, 4398046511103, 2895374552463),
new Tuple<BigInteger, BigInteger, BigInteger>(4398046511104, 8796093022207, 7409811047825),
new Tuple<BigInteger, BigInteger, BigInteger>(8796093022208, 17592186044415, 15404761757071),
new Tuple<BigInteger, BigInteger, BigInteger>(17592186044416, 35184372088831, 19996463086597),
new Tuple<BigInteger, BigInteger, BigInteger>(35184372088832, 70368744177663, 51408670348612),
new Tuple<BigInteger, BigInteger, BigInteger>(70368744177664, 140737488355327, 119666659114170),
new Tuple<BigInteger, BigInteger, BigInteger>(140737488355328, 281474976710655, 191206974700443),
new Tuple<BigInteger, BigInteger, BigInteger>(281474976710656, 562949953421311, 409118905032525),
new Tuple<BigInteger, BigInteger, BigInteger>(562949953421312, 1125899906842623, 611140496167764),
new Tuple<BigInteger, BigInteger, BigInteger>(1125899906842624, 2251799813685247, 2058769515153876),
new Tuple<BigInteger, BigInteger, BigInteger>(2251799813685248, 4503599627370495, 4216495639600700),
new Tuple<BigInteger, BigInteger, BigInteger>(4503599627370496, 9007199254740991, 6763683971478124),
new Tuple<BigInteger, BigInteger, BigInteger>(9007199254740992, 18014398509481983, 9974455244496707),
new Tuple<BigInteger, BigInteger, BigInteger>(18014398509481984, 36028797018963967, 30045390491869460),
new Tuple<BigInteger, BigInteger, BigInteger>(36028797018963968, 72057594037927935, 44218742292676575),
new Tuple<BigInteger, BigInteger, BigInteger>(72057594037927936, 144115188075855871, 138245758910846492),
new Tuple<BigInteger, BigInteger, BigInteger>(144115188075855872, 288230376151711743, 199976667976342049),
new Tuple<BigInteger, BigInteger, BigInteger>(288230376151711744, 576460752303423487, 525070384258266191),
new Tuple<BigInteger, BigInteger, BigInteger>(576460752303423488, 1152921504606846975, 1135041350219496382),
new Tuple<BigInteger, BigInteger, BigInteger>(1152921504606846976, 2305843009213693951, 1425787542618654982),
new Tuple<BigInteger, BigInteger, BigInteger>(2305843009213693952, 4611686018427387903, 3908372542507822062),
new Tuple<BigInteger, BigInteger, BigInteger>(4611686018427387904, 9223372036854775807, 8993229949524469768),
new Tuple<BigInteger, BigInteger, BigInteger>(9223372036854775808, 18446744073709551615, 17799667357578236628),
foreach (var range in ranges)
BigInteger start = range.Item1;
BigInteger end = range.Item2;
BigInteger x = range.Item3;
BigInteger diff = x - start;
BigDecimal diffDec = new BigDecimal(diff);
BigDecimal y = (diffDec / start);
BigDecimal result = start * (1 + y);
decimal resultY = (decimal)y;
decimal roundedY = Math.Round(resultY, 19);
BigDecimal resultRoundfromY = BigDecimal.Multiply(start,(1 +roundedY));
decimal resultRoundfromYRound = (decimal)resultRoundfromY;
decimal resultRoundfromYRoundFin = Math.Round(resultRoundfromYRound, 0);
Console.WriteLine($"Range: [{start}, {end}], x: {x}, diff: {diff}, y: {roundedY:F19}, Result: {start} + y*start = {resultRoundfromYRoundFin}");