AOJで3の倍数と3を含む数字を出力する問題があり、簡単ではあるがメモを残す。まずは3の倍数についてだが、3の倍数は変数i
を3で割った余りが0であれば3の倍数なので、
if(i%3===0){
arry.push(i);
}
で求められる。(配列に格納している理由は後ほど)
次に3を含むかどうかだが、これは変数iを文字列として扱い、その文字列に”3″が含まれているかで判定する。
if(i.toString().includes('3')){
arry.push(i)
}
これだけで3の倍数と3を含む数値を判定できる。
AOJでは、1から始まり、与えられた数字nまでの中で、上記の条件に当てはまる物を横一列で空白区切りで出力することになっていたので、当てはまる数値を配列arryに格納し、最後に空白区切りで全て出力する処理を組み込んだ。
let n = require("fs").readFileSync("/dev/stdin","utf-8");
let arry = [];
for(i=1;i<Number(n)+1;i++){
if(i%3===0){
arry.push(i);
}else if(i.toString().includes('3')){
arry.push(i)
}
}
console.log(arry.join(' '));