-
Notifications
You must be signed in to change notification settings - Fork 0
/
1f-misha-and-mathematics.js
78 lines (60 loc) · 3.25 KB
/
1f-misha-and-mathematics.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/*
F. Миша и математика
Ограничение времени 1 секунда (фактическое использование на тестах – до 87ms)
Ограничение памяти 256Mb (фактическое использование на тестах – до 14.02Mb)
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Миша сидел на занятиях математики в Высшей школе экономики и решал следующую задачу: дано n целых чисел и нужно расставить между ними знаки + и × так, чтобы результат полученного арифметического выражения был нечётным (например, между числами 5, 7, 2, можно расставить арифметические знаки следующим образом: 5 × 7 + 2 = 37). Так как примеры становились все больше и больше, а Миша срочно убегает в гости, от вас требуется написать программу решающую данную задачу.
Формат ввода
В первой строке содержится единственное число n (2 ≤ n ≤ 10^5). Во второй строке содержится n целых чисел a[i], разделённых пробелами (−10^9 ≤ a[i] ≤ 10^9). Гарантируется, что решение существует.
Формат вывода
В одной строке выведите n−1 символ + или ×, в результате применения которых получается нечётный результат. (Для вывода используйте соответственно знаки «+» (ASCII код — 43) и «x» (ASCII код — 120), без кавычек).
Пример 1
Ввод
3
5 7 2
Вывод
x+
Пример 2
Ввод
2
4 -5
Вывод
+
*/
const fs = require('fs');
const input = fs.readFileSync('input.txt', 'utf8').toString().trim() + ' ';
let output = '';
const len = input.length;
const plusSymbol = '+';
const multiplySymbol = 'x';
let iterating = false;
let counting = false;
let lastDigit = '';
let accumulatedResultOdd = false;
let currentNumberOdd = null;
for (let i = 0; i < len; ++i) {
if (iterating) {
if (input[i] !== ' ') {
lastDigit = input[i];
} else {
currentNumberOdd = lastDigit === '1' || lastDigit === '3' || lastDigit === '5' || lastDigit === '7' || lastDigit === '9';
if (counting) {
if (accumulatedResultOdd && currentNumberOdd) {
output += multiplySymbol;
} else {
output += plusSymbol;
if (accumulatedResultOdd || currentNumberOdd) {
accumulatedResultOdd = true;
}
}
} else {
counting = true;
accumulatedResultOdd = currentNumberOdd;
}
}
} else if (input[i] === '\n') {
iterating = true;
}
}
fs.writeFileSync('output.txt', `${output}`);