Полагаю, это дубликат но без данных о входных/выходных данных. Тогда я продублирую решение на C#.
using System;
using System.Linq;
namespace Samokat
{
class Program
static void Main(string[] args)
var input = Console.In
.ReadLine()
.Split(',', ' ')
.Where(t => !String.IsNullOrEmpty(t))
.Select(int.Parse)
.ToList();
int flatLen = input[0];
int uphillLen = input[1];
int flatDrain = input[2];
int uphillDrain = input[3];
int fuel = input[4];
// minimizing flat travel
int minFlatLen = flatLen - fuel;
minFlatLen = minFlatLen < 0 ? 0 : minFlatLen;
int maxUphillLen = uphillLen - (fuel - (flatLen - minFlatLen)) / 2;
maxUphillLen = maxUphillLen < 0 ? 0 : maxUphillLen;
// minimizing uphill travel
int minUphillLen = uphillLen - (fuel) / 2;
minUphillLen = minUphillLen < 0 ? 0 : minUphillLen;
int maxFlatLen = flatLen - (fuel - (uphillLen - minUphillLen) * 2);
maxFlatLen = maxFlatLen < 0 ? 0 : maxFlatLen;
int minFlatTravelDrain = minFlatLen * flatDrain + maxUphillLen * uphillDrain;
int maxFlatTravelDrain = maxFlatLen * flatDrain + minUphillLen * uphillDrain;
var minDrain = Math.Min(minFlatTravelDrain, maxFlatTravelDrain);
var maxDrain = Math.Max(minFlatTravelDrain, maxFlatTravelDrain);
Console.Out.WriteLine(minDrain);
Console.Out.WriteLine(maxDrain);
}
То есть 345₆ = 3·6²+4·6¹+5·6⁰ = 3·36+4·6+5·1 = 137₁₀
Однако все числа имеют одинаковые цифры в разрядах, поэтому для удобства вычислений, считать будем чуть иначе.
345₁₀ = 3·10²+4·10¹+5·10⁰ = 3·100+4·10+5
345₉ = 3·9²+4·9¹+5·9⁰ = 3·81+4·9+5 = 3·(100-19)+4·(10-1)+5
345₈ = 3·8²+4·8¹+5·8⁰ = 3·64+4·8+5 = 3·(81-17)+4·(9-1)+5
345₇ = 3·7²+4·7¹+5·7⁰ = 3·49+4·7+5 = 3·(64-15)+4·(8-1)+5
345₆ = 3·6²+4·6¹+5·6⁰ = 3·36+4·6+5 = 3·(49-13)+4·(7-1)+5
345₉ = 345-3·19-4·1 = 284₁₀
345₈ = 284-3·17-4·1 = 229₁₀
345₇ = 229-3·15-4·1 = 180₁₀
345₆ = 180-3·13-4·1 = 137₁₀
Полагаю, это дубликат но без данных о входных/выходных данных. Тогда я продублирую решение на C#.
using System;
using System.Linq;
namespace Samokat
{
class Program
{
static void Main(string[] args)
{
var input = Console.In
.ReadLine()
.Split(',', ' ')
.Where(t => !String.IsNullOrEmpty(t))
.Select(int.Parse)
.ToList();
int flatLen = input[0];
int uphillLen = input[1];
int flatDrain = input[2];
int uphillDrain = input[3];
int fuel = input[4];
// minimizing flat travel
int minFlatLen = flatLen - fuel;
minFlatLen = minFlatLen < 0 ? 0 : minFlatLen;
int maxUphillLen = uphillLen - (fuel - (flatLen - minFlatLen)) / 2;
maxUphillLen = maxUphillLen < 0 ? 0 : maxUphillLen;
// minimizing uphill travel
int minUphillLen = uphillLen - (fuel) / 2;
minUphillLen = minUphillLen < 0 ? 0 : minUphillLen;
int maxFlatLen = flatLen - (fuel - (uphillLen - minUphillLen) * 2);
maxFlatLen = maxFlatLen < 0 ? 0 : maxFlatLen;
int minFlatTravelDrain = minFlatLen * flatDrain + maxUphillLen * uphillDrain;
int maxFlatTravelDrain = maxFlatLen * flatDrain + minUphillLen * uphillDrain;
var minDrain = Math.Min(minFlatTravelDrain, maxFlatTravelDrain);
var maxDrain = Math.Max(minFlatTravelDrain, maxFlatTravelDrain);
Console.Out.WriteLine(minDrain);
Console.Out.WriteLine(maxDrain);
}
}
}
То есть 345₆ = 3·6²+4·6¹+5·6⁰ = 3·36+4·6+5·1 = 137₁₀
Однако все числа имеют одинаковые цифры в разрядах, поэтому для удобства вычислений, считать будем чуть иначе.
345₁₀ = 3·10²+4·10¹+5·10⁰ = 3·100+4·10+5
345₉ = 3·9²+4·9¹+5·9⁰ = 3·81+4·9+5 = 3·(100-19)+4·(10-1)+5
345₈ = 3·8²+4·8¹+5·8⁰ = 3·64+4·8+5 = 3·(81-17)+4·(9-1)+5
345₇ = 3·7²+4·7¹+5·7⁰ = 3·49+4·7+5 = 3·(64-15)+4·(8-1)+5
345₆ = 3·6²+4·6¹+5·6⁰ = 3·36+4·6+5 = 3·(49-13)+4·(7-1)+5
345₉ = 345-3·19-4·1 = 284₁₀
345₈ = 284-3·17-4·1 = 229₁₀
345₇ = 229-3·15-4·1 = 180₁₀
345₆ = 180-3·13-4·1 = 137₁₀