Вывести все суммы цифр числа - C#

Узнай цену своей работы

Формулировка задачи:

Пытался делать переборами, но ничего не выходит. Мне необходимо найти суммы цифр определенного числа. К примеру: Есть число 135. Мне необходимо чтобы в результате отобразились все его суммы цифр. Такие как: 4, 6, 9, 8. Если число 1456, то суммы должны быть: 5, 6, 7, 9, 10, 11, 15, 16. В общем примерно так. Как это можно сделать? Или хотя бы при помощи какого алгоритма?
Нашёл код на С++, но он чуток неверно работает, а на шарп если переводить, то вообще ошибку выдаёт.
#define N 10
 
int main()
{
    int A[N] = { 3, 5, 1, 2, 8, 7, 9, 4, 6, 0 };
 
    int* B = new int[3 * N];
    for (int i = 1, k = 0; i <= N-2; i++)
    {
        B[k] = A[i-1] + A[i+1];
        B[k+1] = A[i+1] + A[i];
        B[k+2] = A[i-1] + A[i];
        B[k+3] = B[k+2] + A[i+1];
        k+=4;
    }
 
    for (int q = 0; q < 3 * N; q++)
        printf("%d ",B[q]);
    printf("\n");
}

Решение задачи: «Вывести все суммы цифр числа»

textual
Листинг программы
class Program 
{
    static IEnumerable<int> Digits(int x, int b)
    {
        do yield return x % b;
        while ((x /= b) > 0);
    }
 
    static IEnumerable<int> Sums(int x)
    {
        var digits = Digits(x, 10).ToArray();
        for (int k = 1; k < 1 << digits.Length; k++)
        {
            var pos = Digits(k, 2)
                .Select((b, i) => new { b, i })
                .Where(p => p.b == 1);
 
            if (pos.Count() > 1)
                yield return pos.Sum(p => digits[p.i] * p.b);
        }
    }
 
    static void Main(string[] args)
    {
        int x = 135;
        Console.WriteLine(x + ": " + String.Join(", ", Sums(x).Distinct().OrderBy(_ => _)));
        Console.ReadKey();
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5
Похожие ответы