This problem asks us to work out the first ten digits of the sum of a sequence of one-hundred 50-digit numbers.
To do this problem I used a sequence of queues to examine these numbers one column at a time. Each 50-digit number was loaded into a char queue, and to examine the left-most digit, I popped each char and converted it to a number, then processed the running sum.
We know that if we have 100 numbers, the maximum of any given column is 900, which means the sum of digits in any given column can only affect two columns over, at most. For example, if I were to change all the digits in the ones place, that would change the ones place, the tens place, and possibly the hundreds place of the sum, but it will never affect the thousands place of the sum.
This gives us the information we need - to compute 1 digit of the answer, we sum up all of the leading digits, and we know that whatever is in the next column can never affect more than two columns over, so if we sum all the digits in the first column, the third place of that sum will be the first digit of the sum of all of those numbers. From there we can keep moving over, until we've generated 10 digits - then we keep moving over two more columns, since we know that a given column can be affected by the next two columns.
Project Eulerproject euler notes
Round 1: Problems 1-20
Round 2: Problems 50-70
Round 3: Problems 100-110
Round 4: Problems 500-510
Round 5: Problems 150-160
Round 6: Problems 250-260
Round 7: Problems 170-180