//ProjectEuler/C++/Headers/Problem28.hpp //Matthew Ellison // Created: 09-21-19 //Modified: 09-21-19 //What is the sum of the numbers on the diagonals in a 1001 by 1001 spiral formed by starting with the number 1 and moving to the right in a clockwise direction a 5 by 5 spiral //Unless otherwise listed all non-standard includes are my own creation and available from https://bibucket.org/Mattrixwv/myClasses /* Copyright (C) 2019 Matthew Ellison This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #ifndef PROBLEM28_HPP #define PROBLEM28_HPP #include #include #include #include "Problem.hpp" class Problem28 : public Problem{ private: std::vector> grid; //Holds the grid that we will be filling and searching uint64_t sumOfDiagonals; //Holds the sum of the diagonals of the grid void setupGrid(); //Sets up the grid void findSum(); //Finds the sum of the diagonals in the grid public: Problem28(); virtual void solve(); virtual std::string getString() const; std::vector> getGrid() const; //Returns the grid uint64_t getSum() const; //Returns the sum of the diagonals }; /* Results: The sum of the diagonals in the given grid is 669171001 It took 913.800 microseconds to solve this problem. */ #endif //PROBLEM28_HPP