Cランクレベルアップメニュー【条件を満たす最小の自然数・シミュレーションの練習・シミュレーション】
【STEP: 1】コード
let i = 10000;
while (i % 13 !== 0) { // i が 13 で割り切れない間…
i++; // i を加算
}
console.log(i); // i を出力
while文 を使って i % 13 === 0
になるまでループ。
【STEP: 2】コード
reader.on('close', () => {
const n = Number(lines[0]);
const [a, b] = lines[1].split(' ').map(Number);
let paiza = 1;
let kyoko = 1;
let count = 0; // 操作回数
while (kyoko <= n) { // kyoko が n 以下の間
kyoko += paiza * a; // パイザの番 → 京子 + パイザ ✕ a
paiza += kyoko % b; // 京子の番 → パイザ + 京子 mod b
count++; // 操作回数
}
console.log(count);
});
while文 を使って kyoko > n
になるまでループ。
【FINAL】コード1
reader.on('close', () => {
let H = Number(lines[0]);
const paiza_d = [];
const monster_d = [];
let [turn, m, p] = [true, 0, 0];
while (H > 0) {
let attack = 1;
if (turn) {
p++;
if (p > 2) {
attack = paiza_d[p - 2] + paiza_d[p - 3];
}
monster_d.push(attack);
} else {
m++;
if (m > 2) {
attack = (monster_d[m - 2] * 2) + monster_d[m - 3];
}
H -= attack;
paiza_d.push(attack);
}
turn ? turn = false : turn = true;
}
console.log(m);
});
while文 を使って H <= 0
になるまでループ。
【FINAL】コード2
reader.on('close', () => {
let H = Number(lines[0]);
const paiza_d = [];
const monster_d = [];
let count = 0;
while (H > 0) {
let attack1 = 1;
let attack2 = 1;
if (count >= 2) {
attack1 = paiza_d[count - 1] + paiza_d[count - 2];
attack2 = (monster_d[count - 1] * 2) + monster_d[count - 2];
}
monster_d.push(attack1);
paiza_d.push(attack2);
H -= attack2;
count++;
}
console.log(count);
});
解答コード例
を参照し コードを整理しました。
コメント