Rozwiazanie01 KacperKruczek #4
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