zoukankan      html  css  js  c++  java
  • Project Euler 8 Largest product in a series


    题意:寻找这 1000 个数中相邻 13 个数相乘积最大的值

    思路:首先想到的是暴力,但是还可以利用之前记录过的数值,什么意思呢?即在计算 2 ~ 14 后,再计算 3 ~ 15 时完全可以利用之前计算 2~14的值再除以 2 乘上 15 ,但是因为其中有 0 的存在需要改造一下,记录下之前出现的 0 的个数,当这连续13个数有 0 存在的时候,结果自然是 0 直接忽略,当没 0 的时候更新一下 maxN 即可。


    /*************************************************************************
        > File Name: euler008.c
        > Author:    WArobot 
        > Blog:      http://www.cnblogs.com/WArobot/ 
        > Created Time: 2017年06月23日 星期五 22时41分02秒
     ************************************************************************/
    
    #include "inputdata.h"
    
    int32_t main(){
    	int64_t ans = 1 , zero = 0 , maxN = 0;
    	for(int32_t i = 0 ; i < 1000 ; i++){
    		if( ch[i] != '0' ){
    			ans *= ch[i] - '0';
    		}else{
    			++zero;
    		}
    		if( i >= 13 ){
    			if( ch[i-13] != '0' ){
    				ans /= ch[i-13] - '0';
    			}else{
    				--zero;
    			}
    		}
    		if( zero == 0 && ans > maxN )	maxN = ans;
    	}
    	printf("%"PRId64"
    ",maxN);
    	return 0;
    }
  • 相关阅读:
    《修改代码的艺术》读书笔记
    《软件架构师的12项修炼》阅读笔记2
    《软件架构师的12项修炼》阅读笔记1
    python 包
    《编程珠玑》阅读笔记1
    Darknet和YOLO的区别和关系
    darknet
    yolov3
    软件质量属性
    酷客 机器学习十讲(一)机器学习介绍
  • 原文地址:https://www.cnblogs.com/WArobot/p/7074256.html
Copyright © 2011-2022 走看看