ProjectEuler 008题
题目:
The four adjacent digits in the 1000-digit number that have the greatest product are 9
9
8
9 = 5832.
73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450
Find the thirteen adjacent digits in the 1000-digit number that have the greatest product. What is the value of this product?
代码:将这个矩阵完全复制到一个txt文件中,进行读取计算
1 #include<iostream>
2 //#include<stdio.h>
3 using namespace std;
4
5 int main() {
6 FILE* pFile = fopen("digits.txt","r");
7 if(pFile == NULL){
8 cout << "打开文件失败!" << endl;
9 return 0;
10 }
11 //unsigned int res = 1;
12 long long res = 1;
13 while(!feof(pFile)) {
14
15 char cnums[14];
16 bool end = false;
17 bool has_n = false;
18 for(int i = 0; i < 14; i++) {
19 if(feof(pFile)){
20 end = true;
21 break;
22 }
23 if(i == 13 && has_n == false){
24 break;
25 }
26 char c = fgetc(pFile);
27 if(c == '\n'){
28 has_n = true;
29 }
30 cnums[i] = c;
31 }
32 if(end)
33 break;
34 //要考虑是否有'/n'和'0'
35 //unsigned int m = 1;
36 long long m = 1;
37 bool haszero = false;
38 int j=0;//可能要用来表示0的位置
39 int k = 13;
40 if(has_n){
41 k = 14;
42 }
43 for(j = 0; j<k;j++) {
44 if(cnums[j] != '0' && cnums[j] != '\n') {
45 m = m*(cnums[j]-'0');
46 }
47 else if (cnums[j] == '0'){
48 haszero = true;
49 break;//13个数字中含有0
50 }
51 }
52 if(haszero == false) {//13个数字中不含0,比较结果,并返回指针
53 if(m > res){
54 res = m;
55 }
56 fseek(pFile, -(k-1), SEEK_CUR );
57 //cout << fgetc(pFile);
58 } else {//13个数字中含有0,将指针返回到0之后
59 fseek(pFile, -k, SEEK_CUR );
60 fseek(pFile, j+1, SEEK_CUR );
61 //cout << fgetc(pFile);
62 }
63 cout << res << endl;
64 }
65 cout << res;
66 if(fclose(pFile) == EOF) {
67 cout << "关闭文件失败." << endl;
68 }
69 system("pause");
70 return 0;
71 }
ProjectEuler 008题的更多相关文章
- ProjectEuler 做题记录
退役选手打发时间的PE计划 挂在这里主要是dalao们看到有什么想交流的东西可以私聊哦(站内信或邮箱吧)~~当然现在高三也不怎么能上网. 2017/8/11 595 :第一题QAQ 2017/8/1 ...
- ProjectEuler 005题
题目: 2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any ...
- ProjectEuler 009题
题目: A Pythagorean triplet is a set of three natural numbers, a b c, for which, a2 + b2 = c2 For exam ...
- ProjectEuler 007题
题目:By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is ...
- ProjectEuler 006题
题目: The sum of the squares of the first ten natural numbers is, 12 + 22 + ... + 102 = 385 The square ...
- ProjectEuler 004题
1 #include<iostream> 2 using namespace std; 3 4 int main() { 5 bool isPalindromic (int num); 6 ...
- ProjectEuler 003题
1 //题目:The prime factors of 13195 are 5, 7, 13 and 29. 2 //What is the largest prime factor of the n ...
- nim也玩一行流,nim版的list comprehension
nim 是一门风格类似python的静态编译型语言,官方网站:http://nim-lang.org 如果你想折腾nim的编辑环境,可以用sublime text3 +插件nimlime,notepa ...
- ProjectEuler && Rosecode && Mathmash做题记录
退役选手打发时间的PE计划 挂在这里主要是dalao们看到有什么想交流的东西可以私聊哦(站内信或邮箱吧) 2017/8/11 PE595 :第一题QAQ 2017/8/12 PE598 2017/ ...
随机推荐
- Unittest方法 -- 测试分离
一.下面是it.py 脚本,把浏览器前置和后置条件分离了"""套件公用测试类可进行分离"""import unittestfrom sele ...
- javascript里面的document.getElementById
一.getElementById:获取对 ID 标签属性为指定值的第一个对象的引用,它有 value 和 length 等属性 1.获取当前页面的值input标签值:var attr1=documen ...
- 使用turtle库画一朵玫瑰花带文字
参考链接:https://jingyan.baidu.com/article/d169e18689f309026611d8c8.html https://blog.csdn.net/weixin_41 ...
- intouch制作历史趋势公用弹窗
在先前项目中,历史趋势都是作为一个总体的画面,然后添加下拉菜单选择来配合使用.在新项目中,业主要求在相应的仪表上直接添加历史趋势,这就需要利用公用弹窗来制作历史趋势了. 1.窗体建立 窗体建立是比较简 ...
- videojs文档翻译-Player(v6.0.0-RC.2)
Player 当使用任何Video.js设置方法初始化视频时,将创建Player类的实例. 创建实例后,可以通过两种方式在全局访问: 调用videojs('example_video_1');直接通过 ...
- 自学 linux——14.mysql的基本操作
MySQL的基本操作 1.名词介绍 以Excel文件举例: 数据库:可以看作是整个excel文件. 数据表:可以看作是一个excel文件中的工作表. 行(记录):可以看作是一个工作表中的一行 列(字段 ...
- 使用ffmpeg给视频添加跑马灯效果(滚动字幕)
直接上命令 从左往右滚 ffmpeg -i input.mp4 -vf "drawtext=text=string1 string2 string3 string4 string5 stri ...
- 攻防世界Web区部分题解
攻防世界Web区部分题解 前言:PHP序列化就是把代码中所有的 对象 , 类 , 数组 , 变量 , 匿名函数等全部转换为一个字符串 , 提供给用户传输和存储 . 而反序列化就是把字符串重新转换为 ...
- Java面向对象12——static详解
static package oop.demon01.demon07; // static : public class Student { private static int a ...
- 我的大学Android开发学习之路——从开始到微信/支付宝/抖音Offer
前言 笔者2016年高考考入华中科技大学计算机科学与技术专业. 2017年底(大二寒假)拿到今日头条(字节跳动)深圳研发中心Android开发实习生Offer,在深圳研发中心实习至2018年3月. 2 ...