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;
    }
  • 相关阅读:
    NOI模拟赛 6.20
    NOI模拟赛 6.17
    NOI模拟赛 6.16
    计算几何学习笔记
    NOI(p)模拟赛 5.30
    NOI模拟赛 5.26
    [AGC022E] Median Replace 题解
    看完魔圆之后的一点感想(大概
    OI学习日志 11月份
    2021 CSP-S 游记
  • 原文地址:https://www.cnblogs.com/WArobot/p/7074256.html
Copyright © 2011-2022 走看看