Euler_16.cpp (708B)
1 #include <numeric> 2 3 #include "Euler.h" 4 5 int Euler::DigitSum() 6 { 7 std::vector<int> digits; 8 9 digits.push_back(2); 10 11 for (int i = 1; i < 1000; ++i) 12 { 13 for (unsigned j = 0; j < digits.size(); ++j) 14 digits[j] *=2; 15 16 for (unsigned j = 0; j < digits.size(); ++j) 17 { 18 if (digits[j] >= 10) 19 { 20 digits[j] = digits[j] % 10; 21 22 if (j == digits.size() - 1) 23 { 24 digits.push_back(1); 25 } 26 else 27 { 28 digits[j + 1] += 1; 29 } 30 } 31 } 32 } 33 34 return std::accumulate(digits.begin(), digits.end(), 0); 35 }