Given a positive integer **N**, the task is to find the total number of digits in the concatenation of the first N positive integers.**Examples:**

Input:N = 10Output:11

Explanation:

The number formed is 12345678910.

Hence, the total number of digits = 11Input:N = 20Output:31Explanation:

The number formed is 1234567891011121314151617181920

Hence, the total number of digits = 31

**Approach:** Lets make an observation with the examples.

- Let N = 13. So, the digits present in all the numbers between 1 to 13 at one’s place are 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3.
- Similarly, the digits at the tens place are 1, 1, 1, 1.
- So, total ones place digits from 1 to 13 are 13(13 – 0).
- Similarly, the total tens place digits are 4(13 – 9).
- Now, lets look at another number to understand the pattern. Let N = 234. So, the digits at units place are 1(24 times), 2(24 times), 3(24 times), 4(24 times), 5(23 times), 6(23 times), 7(23 times), 8(23 times), 9(23 times), 0(23 times). Hence, 23 * 6 + 24 * 4 = 234.
- Similarly, the digits at tens place are 234 – 9 = 225 because from 1 to 234, only 1 – 9 are the single-digit numbers.
- Lastly, the number of digits at the hundredths place is 234 – 99 = 225 as from 1 to 234, only 1 – 9 are the single-digit numbers and 1 – 99 are the double-digit numbers.
- Therefore, the total number of digits formed when concatenated is 234(234 – 1 + 1) + 225(234 – 10 + 1) + 135(234 – 100 + 1) = 594.
- Hence, the idea is to subtract 0, 9, 99, 999 …. from N to get the number of digits at every place and the summation of all of this is the required answer.

Below is the implementation of the above approach:

## C++

`// C++ program to find the number of` `// digits after concatenating the` `// first N positive integers` `#include <iostream>` `#include <math.h>` `using` `namespace` `std;` `// Function to find the number of` `// digits after concatenating the` `// first N positive integers` `void` `numberOfDigits(` `int` `N)` `{` ` ` `int` `nod = ` `floor` `(` `log10` `(N) + 1);` ` ` `int` `toDecrease` ` ` `= (` `pow` `(10, nod) - 1) / 9;` ` ` `cout << (N + 1) * nod - toDecrease` ` ` `<< endl;` `}` `// Driver code` `int` `main()` `{` ` ` `int` `N = 13;` ` ` `numberOfDigits(N);` ` ` `return` `0;` `}` |

## Java

`// Java program to find the number of` `// digits after concatenating the` `// first N positive integers` `class` `GFG{` `// Function to find the number of` `// digits after concatenating the` `// first N positive integers` `static` `void` `numberOfDigits(` `int` `N)` `{` ` ` `int` `nod = (` `int` `)Math.floor(Math.log10(N) + ` `1` `);` ` ` `int` `toDecrease = (` `int` `)(Math.pow(` `10` `, nod) - ` `1` `) / ` `9` `;` ` ` ` ` `System.out.print((N + ` `1` `) * nod - toDecrease);` `}` `// Driver code` `public` `static` `void` `main(String[] args)` `{` ` ` `int` `N = ` `13` `;` ` ` `numberOfDigits(N);` `}` `}` `// This code is contributed by shivanisinghss2110` |

## Python3

`# Python3 program to find the number` `# of digits after concatenating the` `# first N positive integers` `from` `math ` `import` `log10, floor` `# Function to find the number of` `# digits after concatenating the` `# first N positive integers` `def` `numberOfDigits(N):` ` ` ` ` `nod ` `=` `floor(log10(N) ` `+` `1` `);` ` ` `toDecrease ` `=` `(` `pow` `(` `10` `, nod) ` `-` `1` `) ` `/` `/` `9` ` ` ` ` `print` `((N ` `+` `1` `) ` `*` `nod ` `-` `toDecrease)` `# Driver code` `if` `__name__ ` `=` `=` `'__main__'` `:` ` ` ` ` `N ` `=` `13` ` ` ` ` `numberOfDigits(N)` ` ` `# This code is contributed by mohit kumar 29` |

## C#

`// C# program to find the number of` `// digits after concatenating the` `// first N positive integers` `using` `System;` `class` `GFG{` `// Function to find the number of` `// digits after concatenating the` `// first N positive integers` `static` `void` `numberOfDigits(` `int` `N)` `{` ` ` `int` `nod = (` `int` `)Math.Floor(Math.Log10(N) + 1);` ` ` `int` `toDecrease = (` `int` `)(Math.Pow(10, nod) - 1) / 9;` ` ` ` ` `Console.Write((N + 1) * nod - toDecrease);` `}` `// Driver code` `public` `static` `void` `Main()` `{` ` ` `int` `N = 13;` ` ` `numberOfDigits(N);` `}` `}` `// This code is contributed by Nidhi_Biet` |

## Javascript

`<script>` `// JavaScript program to implement` `// the above approach` `// Function to find the number of` `// digits after concatenating the` `// first N positive integers` `function` `numberOfDigits(N)` `{` ` ` `let nod = Math.floor(Math.log10(N) + 1);` ` ` `let toDecrease = (Math.pow(10, nod) - 1) / 9;` ` ` ` ` `document.write((N + 1) * nod - toDecrease);` `}` `// Driver code` ` ` `let N = 13;` ` ` `numberOfDigits(N);` ` ` ` ` `// This code is contributed by sanjoy_62.` `</script>` |

**Output:**

17

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the **Essential Maths for CP Course** at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**