2020年度京都大学二次試験前期理系数学の問題にチャレンジ!
今日は大学入試にチャレンジしてみる。 といっても、紙に書いて解く訳ではない。 これまでやってきたループを応用して解いてみようかと思う。
解く問題は、2020年度京都大学二次試験前期理系数学大問5。 今年の京大理系数学で一番難しかった問題じゃないかな〜と思う。
問題は以下のサイトをご覧ください。
以下のプログラムを組んで、実行した。
var A = 0; var f = 0; var max_A = 0; for(var m = 1; m <= 30; m++){ // hoge++ は hoge = hoge + 1 と同義 for(var n = 1; n <= 30; n++){ if (n % 3 == 0) continue; // continueはそのループの処理のみスキップ f = m ** 3 + n ** 2 + n + 3; // ** は 累乗を表す while(f % 3 == 0){ A = A + 1; f = f / 3; } if (max_A < A) max_A = A; A = 0; f = 0; } } console.log(max_A);
すると答えの一部である4が出力されるではないか!!!
max_Aが4と分かったので、これを反映したプログラムに改変して実行!
var A = 0; var f = 0; var max_A = 0; for(var m = 1; m <= 30; m++){ // hoge++ は hoge = hoge + 1 と同義 for(var n = 1; n <= 30; n++){ if (n % 3 == 0) continue; // continueはそのループの処理のみスキップ f = m ** 3 + n ** 2 + n + 3; // ** は 累乗を表す while(f % 3 == 0){ A = A + 1; f = f / 3; } if(A == 4) console.log("m = " + m + ", n = " + n); A = 0; f = 0; } }
すると、
m = 3, n = 11
m = 12, n = 11
m = 21, n = 11
m = 30, n = 11
との出力が得られる。
よっしゃあ〜!!!