カメヲラボ

主にプログラミングとお勉強全般について書いてます

CodeIQ過去問集44:最大の攻撃を繰り出せ!

本稿はCodeIQで出題された 第1回プロコン:【鬼】最大値をたたき出す攻撃を繰り出して鬼を倒そう という問題を再編集したものです。 ※出題時と記述が一部異なる場合がありますがご了承ください。

第1問がまだの方はこちら

第2問がまだの方はこちら

第3問がまだの方はこちら

第4問:最大の攻撃を繰り出せ!

【ストーリー】

熱々のラーメンからメンマを取り出す作業で軽く手に火傷を負ったあなたですが無事偏食の猿も仲間にすることができました。
犬、雉、猿を仲間にしたあなたは、ついに姫を救い出すために鬼が島に乗り込みます!!!

f:id:Ozy:20150605125910j:plain

鬼  「私をここまで追い込んだやつは今までいなかったぞ。やるな犬、雉、猿よ」
元々運動が得意でないあなたは前線で戦う犬、雉、猿を見ながら本当に3匹を仲間にしてよかったと思っています。
鬼  「だが、ここまでだ。私を倒すには力足らずだったな。」
先ほどまで鬼を押し込んでいた犬、雉、猿でしたが、鬼に攻撃が通らず、徐々に押し返されてきています。
犬  「桃太郎さん。ボク達がバラバラに攻撃していてもあの鬼には通じないみたいだ」
雉  「桃太郎さんも加わって、いちかばちか総攻撃を仕掛けよう」
猿  「桃太郎さんなら、私たちができる攻撃の中から最大値をたたき出す攻撃を考えられますよね?」
今まで岩の影に隠れていたあなたですが、ついに戦いの場に引きずりだされます。
お供の言うとおり、最大値をたたきださなければ全滅です。
でも、きっとここまできたあなたなら大丈夫ですよね。
鬼を倒して、あなただけの桃太郎を完結させてください。

※今さら補足

桃太郎+お供3匹が2×2の二手に分かれて、鬼の左右から大きな岩を同時にぶつけよう!というシチュエーションを想定して作った問題でした。

【問題】

4つのブロックを立方体と考えます。 一辺の長さをそれぞれa, b, c, dとして、

X = a3 + b3 Y = c3 + d3

とすると、X = Yを満たすX(=Y)の最大値を求めてください。

たとえば、1辺の長さが1~20までのとき、

(1) 13 + 123 = 93 + 103

(2) 23 + 163 = 93 + 153

のような場合が考えられますが、(1)を計算すると1729、(2)を計算すると4104となりますので、4104が条件を満たす最大値となります。

【入力】

標準入力から、整数値(20~1000)が与えられます。

【出力】

標準出力に、解となる整数値のみ出力してください。出力後の改行の有無は問いません。

【入出力例】

Case 1: Input

20

Case 1: Output

4104

Case 2: Input

50

Case 2: Output

110808

【解答例】