/************************************************ Grundlegende Algorithmen mit Java, http://algorithmen-und-problemloesungen.de/ Copyright @2007-2009 by Doina Logofatu in C#: Michael Gärtner ************************************************/ using System; using System.IO; namespace Logofatu { class P06NPart { private static String FileOutputName = "nPart.out"; static void Main(string[] args) { StreamWriter sw = null; try { sw = new StreamWriter(FileOutputName); int n = int.Parse(Console.ReadLine()); int noSol = 0; int[] x = new int[n + 1]; int[] s = new int[n + 1]; bool isSuccessor = false; bool isCandidate = false; int k = 1; while ( k > 0 ) { do { if ( x[k] < n ) { isSuccessor = true; x[k]++; s[k] = s[k - 1] + x[k]; isCandidate = s[k] <= n; } else isSuccessor = false; } while ( isSuccessor && !isCandidate ); if ( isSuccessor ) { if ( s[k] == n ) { sw.Write(x[1]); for ( int i = 2; i <= k; i++ ) { sw.Write(" + "); sw.Write(x[i]); } sw.WriteLine(); noSol++; } else { ++k; x[k] = x[k - 1] - 1; } } else k--; } sw.Write("Anzahl der Lösungen = "); sw.Write(noSol); } finally { if ( sw != null ) { sw.Close(); } } } } }