トップページに戻る    次の競技プログラミングの問題へ    前の競技プログラミングの問題へ

第2回 CodeIQプロコン 2問目 彼魚らの衣装の値段は?

■■■問題■■■

タイやヒラメのような人たちの人数Nが与えられます。
彼魚らの衣装には、固有の番号1からNが刺繍されています。
衣装のベースは1着あたり10000円で、
番号の刺繍に使われている真珠の個数によって金額は異なります。



0・・・真珠24個
1・・・真珠 9個
2・・・真珠21個
3・・・真珠21個
4・・・真珠17個
5・・・真珠21個
6・・・真珠24個
7・・・真珠13個
8・・・真珠27個
9・・・真珠24個

真珠1個につき1000円かかるものとします。

たとえば、「10」の番号がついている衣装なら、
ベース ・・・ 10000円
「1」  ・・・ 1000円× 9個= 9000円
「0」  ・・・ 1000円×24個=24000円
で、合計43000円になります。

■■■入力■■■

標準入力から、整数値N(1 <= N <= 3万)が与えられます。

■■■出力■■■

1からN番までのすべての衣装代を求め、その合計金額を標準出力に出力してください。


C#のソース

using System;
using System.Collections.Generic;

class Program
{
    static string InputPattern = "Input1";

    static List<string> GetInputList()
    {
        var WillReturn = new List<string>();

        if (InputPattern == "Input1") {
            WillReturn.Add("10");
            //310000
        }
        else if (InputPattern == "Input2") {
            WillReturn.Add("30000"); //最悪計算量
        }
        else {
            string wkStr;
            while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
        }
        return WillReturn;
    }

    static void Main()
    {
        List<string> InputList = GetInputList();
        int N = int.Parse(InputList[0]);

        long SumVal = 0;
        for (int I = 1; I <= N; I++) {
            SumVal += 10000;

            int CopiedVal = I;
            while (CopiedVal > 0) {
                int ModVal = CopiedVal % 10;
                if (ModVal == 0) SumVal += 24000;
                if (ModVal == 1) SumVal += 9000;
                if (ModVal == 2) SumVal += 21000;
                if (ModVal == 3) SumVal += 21000;
                if (ModVal == 4) SumVal += 17000;
                if (ModVal == 5) SumVal += 21000;
                if (ModVal == 6) SumVal += 24000;
                if (ModVal == 7) SumVal += 13000;
                if (ModVal == 8) SumVal += 27000;
                if (ModVal == 9) SumVal += 24000;
                CopiedVal /= 10;
            }
        }
        Console.WriteLine(SumVal);
    }
}


解説

ループでの処理は、多くとも、3万*5で15万ですので、
ナイーブに実装してます。