Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Program
- {
- static void Main()
- {
- int N; int S;
- int[] numbers;
- using (StreamReader reader = new StreamReader("input.dat"))
- {
- string line;
- line = reader.ReadLine();
- string[] parts = line.Split(' ');
- int.TryParse(parts[0], out N);
- numbers = new int[N];
- int.TryParse(parts[1], out S);
- line = reader.ReadLine();
- parts = line.Split(' ');
- for (int i = 0; i < N; i++)
- {
- int item;
- int.TryParse(parts[i], out item);
- numbers[i] = item;
- }
- }
- int maxOperations = (int)Math.Pow(2, N - 1);
- using (StreamWriter writer = new StreamWriter("output.dat"))
- {
- for (int i = 0; i < maxOperations; i++)
- {
- int currentSum = numbers[0];
- List<char> operators = new List<char>();
- for (int j = 0; j < N - 1; j++)
- {
- if ((i & (1 << j)) != 0)
- {
- currentSum += numbers[j + 1];
- operators.Add('+');
- }
- else
- {
- currentSum -= numbers[j + 1];
- operators.Add('-');
- }
- }
- if (currentSum == S)
- {
- string resultExpression = numbers[0].ToString();
- for (int j = 0; j < N - 1; j++)
- {
- resultExpression += " " + operators[j] + " " + numbers[j + 1];
- }
- writer.Write(resultExpression + " = " + S);
- Console.WriteLine(resultExpression + " = " + S);
- return;
- }
- }
- writer.Write("No solution");
- Console.WriteLine("No solution");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement