Hatena::Grouptopcoder

chokudaiの日記

 | 

2010-11-06

SRM 367 Div1 Easy ObtainingDigitK

18:25 | SRM 367 Div1 Easy ObtainingDigitK - chokudaiの日記 を含むブックマーク はてなブックマーク - SRM 367 Div1 Easy ObtainingDigitK - chokudaiの日記 SRM 367 Div1 Easy ObtainingDigitK - chokudaiの日記 のブックマークコメント

問題

文字列型ででっかい数字が与えられる いくつ足せば0-9までの整数kが出てくるか求めなさい

originalNumberは50文字までの10進文字列

方針

BigIntegerあれば困らないなぁと思いつつ、BigIntegerもどきを自力実装

もうちょっと手抜ける気もしたけどこれで余裕だからいいやw

ソースコード

ひどいけど・・・w

    public int minNumberToAdd(string originalNumber, int k)
    {
        int[] digit = new int[101];
        int i,j;
        for (i = 0; i < originalNumber.Length; i++) digit[originalNumber.Length - i - 1] = originalNumber[i] - '0';
        for (i = 0; i < 10; i++)
        {
            for (j = 0; j < originalNumber.Length + 1; j++)
            {
                if (j == originalNumber.Length && digit[originalNumber.Length] == 0) continue;
                if (digit[j] >= 10) { digit[j + 1]++; digit[j] -= 10; }
                if (digit[j] == k) return i;
            }
            digit[0]++;
        }
        return 9;
    }
 |