paizaの森練習問題コンテスト(2023年8月開催)の過去問
です。
【お菓子の合計金額】コード
reader.on('close', () => {
const [a, b] = lines[0].split(' ').map(Number);
console.log(a + b);
});
a 円 + b 円 = 合計金額 。
【フィボナッチ数列】コード
const f = [1, 1];
for (let i = 1; i < 9; i++) {
f.push(f[i] + f[i - 1]);
}
for (const value of f) {
console.log(value);
}
【素数判定】コード
reader.on('close', () => {
const N = Number(lines[0]);
let prime = true;
if (N < 2) {
prime = false;
} else {
for (let i = 2; i < N; i++) {
if (N % i === 0) {
prime = false;
break;
}
}
}
console.log(prime ? 'Yes' : 'No');
});
素数…2以上の自然数のうち 自身と1だけでしか割り切れない数。
【残業時間】コード
reader.on('close', () => {
let sum = 0;
for (let i = 0; i < 30; i++) {
sum += lines[i] - 8;
}
console.log(sum);
});
1日8時間以上働いたら 残業。
【ロボットの移動 – その 2】コード
reader.on('close', () => {
let [x, y] = lines[0].split(' ').map(Number);
[x, y] = [Math.abs(x), Math.abs(y)];
if (x === y) {
console.log(x + y);
} else {
console.log((x + y) + Math.abs(x - y) - 1);
}
});
同じ方向に連続して移動できないので難しかった。
【辞書順で最も小さい文字列】コード
reader.on('close', () => {
const s = lines[1].split('');
console.log(s.sort().join(''));
});
sort() で辞書順に並べ替え。
【全員が正答】コード
reader.on('close', () => {
const [n, m] = lines[0].split(' ').map(Number);
const p = [];
const p2 = [];
for (let i = 1; i <= m; i++) {
p.push(lines[i].split(' ').map(Number));
}
for (let i = 0; i < n; i++) {
p2.push([]);
for (let j = 0; j < m; j++) {
p2[i][j] = p[j][i];
}
}
let all = false;
for (let i = 0; i < n; i++) {
const t = p2[i].reduce((a, c) => a + c);
if (t === m) {
all = true;
break;
}
}
console.log(all ? 'Yes' : 'No');
});
配列の行と列を反転して 行の合計が m になれば全員正解 。
コメント