Вывести все суммы цифр числа - 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(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д