project-euler

https://projecteuler.net/
Log | Files | Refs | README

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 }