从0到n的数字中出现的数字1的次数

时间:2014-12-16 21:23:37

标签: c# math

我在控制台应用程序中需要帮助,需要一个数字 然后计算数字1的出现次数

这是数学解决方案

https://math.stackexchange.com/questions/47477/number-of-occurrences-of-the-digit-1-in-the-numbers-from-0-to-n

我试图实现这个功能,但我对数学错失理解的原因并不幸运

 static void Main(string[] args)
    {
        Stopwatch s = new Stopwatch();
        Console.WriteLine("Enter the number");
        string num =Console.ReadLine();
        s.Start();
        int count = 0;
        int[] numbers = new int [num.Length];
        for (int i = 0; i < num.Length; i++)
        { 
            numbers[i] = Int32.Parse( num.Substring(num.Length - 1 - i, 1))*(Int32)Math.Pow(10,i);
        }

        int digits;
        for (int i = 0; i < numbers.Length; i++)
        {
            digits = numbers[i].ToString().Length-1;
            Int32 lastDegit = Int32.Parse(numbers[i].ToString()[0]+"");
            count+=Convert.ToInt32(lastDegit*digits*Math.Pow(10, digits-1));

      //i'm not sure about next line
      count += Convert.ToInt32(lastDegit * (numbers[i].ToString().Length - 1) * Math.Pow(10, numbers[i].ToString().Length - 2));

        }

        Console.WriteLine(count);
    }

我在评论befor

这个词时遇到了问题

1 个答案:

答案 0 :(得分:0)

string.Join(string.Empty, Enumerable.Range(0, 1000)).Count(x => x == '1')

(其中n = 1000)