Skip to content

Commit bcdd14b

Browse files
committed
solving waiter
1 parent a89217b commit bcdd14b

File tree

1 file changed

+86
-0
lines changed

1 file changed

+86
-0
lines changed

waiter.js

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
'use strict';
2+
3+
const fs = require('fs');
4+
5+
process.stdin.resume();
6+
process.stdin.setEncoding('utf-8');
7+
8+
let inputString = '';
9+
let currentLine = 0;
10+
11+
process.stdin.on('data', inputStdin => {
12+
inputString += inputStdin;
13+
});
14+
15+
process.stdin.on('end', _ => {
16+
inputString = inputString.trim().split('\n').map(str => str.trim());
17+
18+
main();
19+
});
20+
21+
function readLine() {
22+
return inputString[currentLine++];
23+
}
24+
25+
/*
26+
* Complete the waiter function below.
27+
*/
28+
29+
function sieve(n) {
30+
let prime = Array(n + 1).fill(true);
31+
for (var i = 2; i < Math.round(Math.sqrt(n)); i++) {
32+
if (prime[i] !== false) {
33+
for (var j = Math.pow(i, 2); j < n; j = j + i) {
34+
prime[j] = false;
35+
}
36+
}
37+
}
38+
let p = [];
39+
for (var j = 2; j < n; j++) {
40+
if (prime[j] === true) p.push(j);
41+
};
42+
return p;
43+
}
44+
45+
function waiter(number, qq, ws) {
46+
let primenumbers = sieve(1200);
47+
let a = [];
48+
for (var i = 0; i < number.length; i++) {
49+
if (number[i] % primenumbers[0] !== 0) {
50+
a.push(number[i]);
51+
} else {
52+
ws.write(number[i] + "\n");
53+
}
54+
}
55+
for (let q = 1; q < qq; q++) {
56+
let c = [];
57+
while (a.length > 0) {
58+
let val = a.pop();
59+
if (val % primenumbers[q] !== 0) {
60+
c.push(val);
61+
}
62+
else {
63+
ws.write(val + "\n");
64+
}
65+
}
66+
a = c;
67+
}
68+
a.forEach(x => ws.write(x + "\n"));
69+
}
70+
71+
72+
function main() {
73+
const ws = fs.createWriteStream(process.env.OUTPUT_PATH);
74+
75+
const nq = readLine().split(' ');
76+
77+
const n = parseInt(nq[0], 10);
78+
79+
const q = parseInt(nq[1], 10);
80+
81+
const number = readLine().split(' ').map(numberTemp => parseInt(numberTemp, 10));
82+
83+
waiter(number, q, ws);
84+
85+
ws.end();
86+
}

0 commit comments

Comments
 (0)