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"\n",maxN);
return 0;
}
如要转载请注明转载出处:http://www.cnblogs.com/WArobot