2021/05/12

お知らせ

正解者にはインターンシップへご招待!~マイナビエンジニアからの挑戦状~

この記事の目次

    概要

    こんにちは!システム統括本部(現デジタルテクノロジー戦略本部)のS.Dです。

    突然ですが、このブログ記事を見てくれている学生のみなさんへの挑戦状として、
    僕が考えたオリジナル問題にチャレンジしていただきたいと思います!

    問題をクリアされた方には、
    8月から開催される開発エンジニア向けのインターンシップに招待させていただきます。
    ※正解者が多数出た場合は先着順となります

    E問題の入力ファイルから、答えを作って回答フォームから提出してください!
    E_input

    回答は以下のフォームから送信をお願いいたします。
    https://docs.google.com/forms/d/e/1FAIpQLSfxBXALs2NxyVJLtinGR8WCbuvMY661QmKUuQ0Xl93FygMMig/viewform

    回答期限は5/28(金)になります。みなさんの挑戦をお待ちしています!

    ※5/31追記※
    たくさんのご回答ありがとうございました!解説は以下の記事に掲載しております。

    問題一覧

    A. Suzuki String

    問題

    英小文字からなる文字列 S が与えられます。S の中に部分文字列 "suzuki" はいくつ登場しますか。

    制約

    1 ≤ |S| ≤ 100

    入力

    S

    出力

    suzuki が登場する回数を出力してください。

    入力例

    tanakasuzukisatoutakahashi

    出力例

    1

    B. Suzuki Coin

    問題

    鈴木さんはマイナビットコインを保有し、運用しています。現在、マイナビットコインはバブルの真っ只中で、1日あたり P %の割合で価値が上昇しています。今日のマイナビットコイン・円レートは1マイナビットコイン=1円です。鈴木さんが今日 X マイナビットコインを保有しているとき、鈴木さんの保有するマイナビットコインの価値が Y 円以上になるのは、今日から何日後でしょうか。
    ※円のインフレ・デフレは無いものとします。

    制約

    1 ≤ |X| ≤ 100000
    1 ≤ |Y| ≤ 100000
    1 ≤ |P| ≤ 100
    P ∈ ℕ

    入力

    X Y P

    出力

    マイナビットコインの価値が Y円以上になるのに要する日数を出力してください。

    入力例

    100 1000 2

    出力例

    117

    C. Suzuki Walk 1

    問題

    鈴木さんは、本社から出発して、N個のマイナビの拠点を全て1度ずつ周り本社に戻ってこようと計画しました。各拠点には、N個のユニークな文字がつけられています。拠点間には辺があります。辺は、有向で逆方向へは向かうことはできません。鈴木さんが拠点間を移動するには、料金を支払わなければなりません。鈴木さんは、最小の料金を払って拠点を周りたいと考えています。最小の料金と、鈴木さんの移動経路を出力してください。

    制約

    1 ≤ N ≤ 7

    入力

    N S c0, c1, ..., cN-1 t A0, B0, W0 A1, B1, W1 . At-1, Bt-1, Ct-1

    N: 拠点数
    1 ≤ N ≤ 7
    s: スタート地点(本社)
    0 ≤ s ≤ n-1
    c: 拠点の文字
    t: 辺の数
    0 ≤ t ≤ n*(n-1)
    Ai, Bi, Wi: AiとBiをつなぐ料金Wiの辺
    0 ≤ Ai ≤ n-1
    0 ≤ Bi ≤ n-1
    0 ≤ Wi ≤ 10,000

    出力

    最小の料金と、鈴木さんの移動経路を出力してください。

    入力例

    3 0 a b c 6 0 1 2 0 2 3 1 0 4 1 2 6 2 0 5 2 1 7

    出力例

    13 abca

    D. Suzuki Work

    問題

    鈴木さんは、2日間でやらなければならないタスクがn個あります。それぞれのタスクにかかる時間は、Aiです。鈴木さんは、タスクを2つに分けて、今日と明日行おうとしています。鈴木さんはわがままなので、Aからいくつかのタスクを取り除いて、今日と明日のタスクにかかる時間を同じにしたいです。Aから取り除くタスクの数の最小値を求め、2つのタスクを表示してください。
    ※複数の解答が存在する場合、どの解答を出力しても大丈夫です。

    制約

    2≤n≤100
    1≤Ai2000

    入力

    n A1, A2, .., An

    出力

    1行目:取り除くタスクの数
    2行目:分割したタスク1の数
    2行目:分割したタスク1
    3行目:分割したタスク2の数
    4行目:分割したタスク2

    入力例

    5 3 6 3 9 12

    出力例

    1 3 3 6 3 1 12

    E. Suzuki Walk 2

    問題

    この問題は、C問題と同じ内容ですが制約が異なります。鈴木さんは、本社から出発して、n個のマイナビの拠点を全て1度ずつ周り本社に戻ってこようと計画しました。各拠点には、n個のユニークな文字がつけられています。拠点間には辺があります。辺は、有向で逆方向へは向かうことはできません。鈴木さんが拠点間を移動するには、料金を支払わなければなりません。鈴木さんは、最小の料金を払って拠点を周りたいと考えています。最小の料金と、鈴木さんの移動経路を出力してください。

    制約

    1 ≤ n ≤ 17

    入力

    N S c0, c1, ..., cN-1 t A0, B0, W0 A1, B1, W1 . At-1, Bt-1, Ct-1

    N: 拠点数
    1 ≤ n ≤ 17
    s: スタート地点(本社)
    0 ≤ s ≤ n-1
    c: 拠点の文字
    t: 辺の数
    0 ≤ t ≤ n*(n-1)
    Ai, Bi, Wi: AiとBiをつなぐ料金Wiの辺
    0 ≤ Ai ≤ n-1
    0 ≤ Bi ≤ n-1
    0 ≤ Wi ≤ 10,000

    出力

    最小の料金と、鈴木さんの移動経路を出力してください。

    入力例

    3 0 a b c 6 0 1 2 0 2 3 1 0 4 1 2 6 2 0 5 2 1 7

    出力例

    13 abca

    F. Suzuki Crypt

    問題

    ,"(tzc(ydo(ihwglo0
    
    mclr zhz drilcw bcjq
    mclr zwcdoj drilcw sdjdwz) itovwtbwdlo) bzvdd$ulnpcvbzp) bzvdd$tiipcvbzp
    
    spm zgtmmups?z{ zwc* |; zwc{
        wbcjpw ` udzw?z*
        zgtmmup?wbcjpw*
        cpwtco [[=aldo?wbcjpw*
    
    
    spm vchiw?iubdowpkw{ zwc* |; zwc{
    
        spm vloqpcw$sdvw?b{ dow) y{ dow) z{ zwc*{
            cpwtco sdvw??v) z:?d } b > y* @ upo?z*^* mlc d) v do potrpcbwp?z**
        b) y ` 4820) 4
        vloqpcw$wbyup ` .\
        vloqpcw$wbyup=tisbwp?vloqpcw$sdvw?b) y) sdjdwz**
        vloqpcw$wbyup=tisbwp?vloqpcw$sdvw?b) y) itovwtbwdlo**
        vloqpcw$wbyup=tisbwp?vloqpcw$sdvw?b) y) bzvdd$ulnpcvbzp**
        vloqpcw$wbyup=tisbwp?vloqpcw$sdvw?b) y) bzvdd$tiipcvbzp**
    
        vdipcwpkw ` [[=aldo?vloqpcw$wbyup=jpw?vg) vg* mlc vg do iubdowpkw*
    
        cpwtco vdipcwpkw
    
    
    spm rbdo?*{
        dm upo?bcjq* `` 4{
            icdow?[mubj{wgpjluspoytj[*
        puzp{
            icdow?vchiw?lipo?bcjq:4^*=cpbs?***
    
    
    dm $$obrp$$ `` ~$$rbdo$$~{
        rbdo?*

    鈴木さんは、よくこのような暗号を自作します。
    この暗号は、元の文字と、暗号化した文字の写像は、一対一に対応しています。
    たとえば、元の文字がdのものは暗号化された文章ではsとなっています。
    元の文章の文字の種類をN種類とすると、一対一に対応している為、暗号化した文章の文字の種類もN種類です。

    鈴木さんは、この暗号化の効果を測定しようとしています。
    A[i]を、元の文章の文字を数値化したもの、B[j]を暗号化した文章の文字を数値化したものとします。
    c[k]を、k = i+j となるような (i,j,k)で、C[k] = A[i]+B[j]とします。
    このとき、この暗号化の効果は、max(C[k])です。

    A[i],B[j]が与えられます。
    暗号化の効果を求めてください。
    答えは、非常に大きくなることがあるので、1000000007 で割ったあまりを求めてください。
    (上の暗号も解読してください)

    入力

    N A0,A1,..,A(N-1) B0,B1,...,B(N-1)

    1 ≤ N ≤ 100005
    1 ≤ A[i] ≤10^9
    1 ≤ B[i] ≤10^9
    N:文字の種類
    A[i]:元の文章の文字を数値化したもの
    B[i]:暗号化した文章の文字を数値化したもの

    出力

    暗号化の効果を求めてください。
    答えは、非常に大きくなることがあるので、1000000007 で割ったあまりを求めてください。
    (上の暗号も解読してください)

    お問い合わせ先

    株式会社マイナビインターンシップ事務局
    TEL:03-6267-4134
    MAIL:kr-internship@mynavi.jp

    ※本記事は2021年05月時点の情報です。

    著者:マイナビエンジニアブログ編集部