diff --git a/01-rozwiazanie.js b/01-rozwiazanie.js new file mode 100644 index 0000000..a42a32f --- /dev/null +++ b/01-rozwiazanie.js @@ -0,0 +1,87 @@ +const rl = require('readline').createInterface({ + input: process.stdin, + output: process.stdout +}); + +//zapytanie o wartosc n +rl.question('n? ', n => { + n = parseInt(n); + //sprawdzenie czy n na pewno jest liczba + if (isNaN(n)) throw Error('Must be Number'); + // deklarowanie slownikow dla poszczegolnych elementow(aby się nie powtorzyly) + let elOdw = new Dictionary(); + let dzielZero = new Dictionary(); + let elNil = new Dictionary(); + let elIden = new Dictionary(); + //#region dodanie trywalnych + dzielZero.add(0, 0); + elNil.add(0, 0); + elIden.add(0, 0); + //#endregion + for (let y = 0; y < n; y++) { + //#region Obliczanie elementow Idenpotetnych + if (Math.pow(y, 2) % n == y) { + elIden.add(y, y); + } + //#endregion + for (let x = 0; x < n; x++) { + //#region obliczanie elementow Nilpotetnych + if (Math.pow(y, x) % n == 0) { + elNil.add(y, y); + } + //#endregion + //#region Obliczanie elementow odwracalnych' + if (x >= y && (x * y) % n == 1) { + elOdw.add(x, x); + elOdw.add(y, y); + } + //#endregion + //#region obliczanie dzielnikow zera + if (x >= y && x != 0 && y != 0 && (x * y) % n == 0) { + dzielZero.add(x, x); + dzielZero.add(y, y); + } + //#endregion + } + } + //wypisanie obliczonych wartosci wartosci + console.log([ + elOdw.getValues(), + dzielZero.getValues(), + elNil.getValues(), + elIden.getValues() + ]); + //zamkniecie połaczenia z input/output + rl.close(); +}); + +function NWD(a, b) { + return b ? NWD(b, a % b) : a; +} +// klasa słownika +class Dictionary { + constructor() { + this.elements = {}; + } + add(key, value) { + this.elements[key] = value; + } + remove(key, value) { + delete this.elements[key]; + } + + getKeys() { + let keys = []; + for (let key in this.elements) { + keys.push(key); + } + return keys; + } + getValues() { + let values = []; + for (let key in this.elements) { + values.push(this.elements[key]); + } + return values; + } +}