プログラマー:カーペット
3647 ワード
(質問リンク)
Leoはじゅうたんを買いに行きました.格子じゅうたんの列が見えました.真ん中は黄色で、一列は茶色で、下図のように見えます.
Leoは家に帰ってから、さっき見たじゅうたんの黄色と茶色の格子数を覚えたが、じゅうたん全体の大きさは覚えていない.
Leoがカーペットに茶色の格子数
せいげんじょうけん茶色の格子数 黄色のメッシュの数 カーペットの横方向の長さは、縦方向の長さ以上である. I/O例
brownyellowreturn102[4, 3]81[3, 3]2424[8, 6]
どのじゅうたんも縁が茶色に塗られているだけだ.
中間黄色部分の横方向の長さが
黄色部分とカーペット全体の幅は、それぞれ以下のようにすることができる. xy=yellowxy = yellowxy=yellow (x+2)(y+2)=brown+yellow(x+2)(y+2) = brown + yellow(x+2)(y+2)=brown+yellow 1番から
例えば、
xy2411228364
この候補者の中で、2番の食事を満たす値を見つけて返却すればいい.
黄色sqrt{yellow}yellowは、正解が繰り返されると返されるため、実行時間は長くありません.
ソースコード
質問する
Leoはじゅうたんを買いに行きました.格子じゅうたんの列が見えました.真ん中は黄色で、一列は茶色で、下図のように見えます.
Leoは家に帰ってから、さっき見たじゅうたんの黄色と茶色の格子数を覚えたが、じゅうたん全体の大きさは覚えていない.
Leoがカーペットに茶色の格子数
brown
,黄色の格子数yellow
をパラメータとして与えた場合,カーペットの横寸法と縦寸法を順番に並べて返す解法関数を記述してください.せいげんじょうけん
brown
は8以上5000以下の自然数である.yellow
は、200000を超える自然数である.brownyellowreturn102[4, 3]81[3, 3]2424[8, 6]
に答える
どのじゅうたんも縁が茶色に塗られているだけだ.
中間黄色部分の横方向の長さが
x
であり、縦方向の長さがy
である場合、カーペット全体の横方向の長さはx+2
であり、縦方向の長さはy+2
である.黄色部分とカーペット全体の幅は、それぞれ以下のようにすることができる.
x
とy
の候補者がyellow
の約数集合であることがわかる.例えば、
yellow
が24である場合、x
およびy
の候補者は以下のようになる.xy2411228364
この候補者の中で、2番の食事を満たす値を見つけて返却すればいい.
黄色sqrt{yellow}yellowは、正解が繰り返されると返されるため、実行時間は長くありません.
ソースコード
function solution(brown, yellow) {
// yellow의 약수 중 답이 되는 값만 return
for (let i=1; i<=Math.sqrt(yellow); i++) {
if (yellow%i === 0 && brown+yellow === (yellow/i+2)*(i+2))
return [yellow/i+2, i+2];
}
}
Reference
この問題について(プログラマー:カーペット), 我々は、より多くの情報をここで見つけました https://velog.io/@heony/programmers-42842テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol