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 }