If I want to divide an odd number(for example 7) with 2 to 7, and I want a list of some integers. if I divine 7 with 4, I should get {1, 2, 2, 2}, or if I divine 5 with 3, I want to get {1, 2, 2}.
How can I do this?
static List<int> OddNumDiv(int oddnum, int divnum)
{
List<int> result = new List<int>();
result.Add(oddnum / divnum);
int sum = 0;
for (int i = 0; i < divnum - 2; i++)
{
sum += (int)Math.Round((double)oddnum / divnum, MidpointRounding.AwayFromZero);
result.Add((int)Math.Round((double)oddnum / divnum, MidpointRounding.AwayFromZero));
}
result.Add(oddnum - sum);
return result;
}
static void Main(string[] args)
{
List<int> _7d4 = OddNumDiv(7, 4);
}
This returs with {1, 2, 2, 3} and not what I need {1, 2, 2, 2}
The very same idea as in samidinani answer (modulo arithmetic), but Linq implementation:
using System.Linq;
...
private static List<int> OddNumDiv(int oddnum, int divnum) => Enumerable
.Range(0, divnum)
.Select(i => oddnum / divnum + (i < divnum - oddnum % divnum ? 0 : 1))
.ToList();