楼主: Nicolle
275 14

C++Solutions for The Project Euler Problem [推广有奖]

版主

巨擘

0%

还不是VIP/贵宾

-

TA的文库  其他...

Python Programming

SAS Programming

Structural Equation Modeling

威望
16
论坛币
12329660 个
学术水平
2838 点
热心指数
2822 点
信用等级
2646 点
经验
433424 点
帖子
18725
精华
83
在线时间
7107 小时
注册时间
2005-4-23
最后登录
2018-11-19

Nicolle 学生认证  发表于 2018-11-8 23:30:12 |显示全部楼层
本帖最后由 Nicolle 于 2018-11-8 23:35 编辑
  1. C++ solutions for each of the Project Euler problems.

  2. cmake        major refactor of project structure        2 years ago
  3. data        problem 83 with dijkstra's algorithm        2 years ago
  4. src        problem 88        8 months ago
  5. .gitignore        major refactor        2 years ago
  6. CMakeLists.txt        fix cmakelists        a year ago
  7. README.md        problem 88        8 months ago
  8. README.md
  9. Project Euler
  10. Limeoats Project Euler

  11. I'll be uploading my C++ solutions for each of the Project Euler problems to this repository.

  12. IDE
  13. For this project, I am using JetBrains CLion.

  14. Folder structure
  15. data - Contains data files for various problems, usually in the form of text files.
  16. src - Contains all of the source code files for the project.
  17. External libraries used
  18. BigNumber - Created by me.
  19. Links
  20. http://www.limeoats.com
  21. http://www.projecteuler.net
复制代码

本帖隐藏的内容

Project-Euler-master.zip (163.84 KB)



本帖被以下文库推荐

stata SPSS
Nicolle 学生认证  发表于 2018-11-8 23:31:44 |显示全部楼层
  1. /*
  2. * Problem 2: Even Fibonacci numbers
  3. * By: Mark Guerra
  4. * 10/19/2015
  5. */

  6. #include "main.h"

  7. #include <algorithm>
  8. #include <numeric>

  9. bool Problem002::isOdd(int i) {
  10.     return (i & 1) == 1;
  11. }

  12. std::vector<int> Problem002::getFibNumbers(int max) {
  13.     std::vector<int> list = {1, 2};
  14.     int i = 1;

  15.     while (true) {
  16.         int val = list[i] + list[i - 1];
  17.         if (val >= max)
  18.             break;
  19.         list.push_back(val);
  20.         i++;
  21.     }
  22.     return list;
  23. }

  24. std::string Problem002::get_answer() {
  25.     std::vector<int> list = getFibNumbers(4000000);
  26.     //Remove the odds
  27.     list.erase(std::remove_if(list.begin(), list.end(), [](int i) { return (i & 1) == 1; }), list.end());
  28.     return std::to_string(std::accumulate(list.begin(), list.end(), 0));
  29. }
复制代码
回复

使用道具 举报

Nicolle 学生认证  发表于 2018-11-8 23:32:37 |显示全部楼层
  1. /*
  2. * Problem 3: Largest prime factor
  3. * By: Mark Guerra
  4. * 10/19/2015
  5. */

  6. #include "main.h"

  7. #include <cmath>

  8. long Problem003::getGreatestPrimeFactor(long long num) {
  9.     long i = 2;
  10.     while (pow(i, 2) < num) {
  11.         while (num % i == 0) {
  12.             num /= i;
  13.         }
  14.         i++;
  15.     }
  16.     return num;
  17. }

  18. std::string Problem003::get_answer() {
  19.     return std::to_string(getGreatestPrimeFactor(600851475143));
  20. }
复制代码
回复

使用道具 举报

HappyAndy_Lo 发表于 2018-11-8 23:35:55 |显示全部楼层
已有 1 人评分论坛币 收起 理由
Nicolle + 20 鼓励积极发帖讨论

总评分: 论坛币 + 20   查看全部评分

回复

使用道具 举报

Nicolle 学生认证  发表于 2018-11-8 23:36:46 |显示全部楼层
  1. /*
  2. * Problem 4: Largest palindrome product
  3. * By: Mark Guerra
  4. * 10/19/2015
  5. */

  6. #include "main.h"

  7. #include <sstream>
  8. #include <algorithm>
  9. #include <vector>
  10. #include <iostream>

  11. bool Problem004::isPalindrome(int num) {
  12.     int tmp = num;
  13.     int sum = 0;
  14.     int r;
  15.     while (tmp) {
  16.         r = tmp % 10;
  17.         tmp = tmp / 10;
  18.         sum = sum * 10 + r;
  19.     }
  20.     return num == sum;
  21. }

  22. int Problem004::getLargestPalindrome() {

  23.     std::vector<int> list;
  24.     const int x1 = 999;
  25.     const int x2 = 999;
  26.     for (int i = x1; i > 99; i--) {
  27.         for (int j = x2; j > 99; j--) {
  28.             if (isPalindrome(i * j)) {
  29.                 list.push_back(i * j);
  30.             }
  31.         }
  32.     }

  33.     return list[std::distance(list.begin(), max_element(std::begin(list), std::end(list)))];
  34. }

  35. std::string Problem004::get_answer() {
  36.     return std::to_string(getLargestPalindrome());
  37. }
复制代码
回复

使用道具 举报

hmn21200 发表于 2018-11-8 23:57:33 |显示全部楼层
感谢分享
已有 1 人评分论坛币 收起 理由
Nicolle + 20 鼓励积极发帖讨论

总评分: 论坛币 + 20   查看全部评分

回复

使用道具 举报

GKINGLIU 发表于 2018-11-9 00:37:11 |显示全部楼层
已有 1 人评分论坛币 收起 理由
Nicolle + 20 鼓励积极发帖讨论

总评分: 论坛币 + 20   查看全部评分

回复

使用道具 举报

bearfighting 发表于 2018-11-9 06:21:08 |显示全部楼层
好书,谢谢
已有 1 人评分论坛币 收起 理由
Nicolle + 20 鼓励积极发帖讨论

总评分: 论坛币 + 20   查看全部评分

回复

使用道具 举报

ccwwccww 发表于 2018-11-9 07:36:39 |显示全部楼层
感谢分享
已有 1 人评分论坛币 收起 理由
Nicolle + 20 鼓励积极发帖讨论

总评分: 论坛币 + 20   查看全部评分

回复

使用道具 举报

cheetahfly 在职认证  发表于 2018-11-9 08:13:09 |显示全部楼层
学习一下
已有 1 人评分论坛币 收起 理由
Nicolle + 20 鼓励积极发帖讨论

总评分: 论坛币 + 20   查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要注册

GMT+8, 2018-11-20 00:10