forked from kalmar/DALGLI0
Dodaj '01-rozwiazanie.js'
This commit is contained in:
parent
16f4649ea6
commit
69caff1a61
87
01-rozwiazanie.js
Normal file
87
01-rozwiazanie.js
Normal file
@ -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;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user