Euler_80.cpp (689B)
1 #include <boost/multiprecision/cpp_dec_float.hpp> 2 3 #include "Euler.h" 4 5 namespace mp = boost::multiprecision; 6 7 typedef mp::number<mp::cpp_dec_float<120>> cpp_dec_float_120; 8 9 int Euler::SquareRootDigitalExpansion() 10 { 11 int total = 0; 12 13 for (cpp_dec_float_120 i = 1; i <= 100; ++i) 14 { 15 std::stringstream buffer; 16 buffer << std::setprecision(std::numeric_limits<cpp_dec_float_120>::digits) << mp::sqrt(i); 17 18 std::string irrational = buffer.str(); 19 20 if (irrational.size() > 2) 21 { 22 total += irrational[0] - '0'; 23 24 for (int i = 2; i < 101; ++i) 25 total += irrational[i] - '0'; 26 } 27 } 28 29 return total; 30 }