project-euler

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

Euler_62.cpp (941B)


      1 #include <algorithm>
      2 #include <map>
      3 
      4 #include "Euler.h"
      5 
      6 llui Euler::CubicPermutations()
      7 {
      8     std::map<std::string, std::vector<llui>> cubicGroups;
      9 
     10     for (llui i = 346;; ++i)
     11     {
     12         std::vector<int> cubeDigits = EulerUtility::lluiToDigits(i * i * i);
     13         std::sort(cubeDigits.begin(), cubeDigits.end());
     14 
     15         std::string key;
     16 
     17         for (int j : cubeDigits)
     18             key.push_back(j + '0');
     19 
     20         std::map<std::string, std::vector<llui>>::iterator it = cubicGroups.find(key);
     21 
     22         if (it == cubicGroups.end())
     23         {
     24             std::vector<llui> newGroup;
     25             newGroup.push_back(i * i * i);
     26             cubicGroups.insert(std::pair<std::string, std::vector<llui>>(key, newGroup));
     27         }
     28         else
     29         {
     30             it->second.push_back(i * i * i);
     31 
     32             if (it->second.size() == 5)
     33             {
     34                 return it->second[0];
     35             }
     36         }
     37     }
     38 
     39     return 0;
     40 }