题目8
题解
用滑动窗口一点一点往后挪动,新加入的乘上,掉出窗口的除掉,但是要注意:以上数据中有很多0,一旦乘以0结果就是0了,所以遇到0是不能直接网上乘的,而且因为要求必须是连续的数字相乘,所以包含数字0的窗口的乘积也是不能去更新最终结果的。
#include <iostream>
using namespace std;
char str[1005];
int main(){
long long ans = 0, now = 1, zero_cnt = 0;
cin >> str;
for(int i=0;str[i];i++){
if(i<13){
now *= str[i] - '0';
} else if(str[i] != '0'){
now *= str[i] - '0';
} else{
zero_cnt++;
}
if(i>=13){
if(str[i-13] != '0'){
now /= str[i-13] - '0';
} else{
zero_cnt--;
}
}
if(zero_cnt == 0)
ans = max(ans, now);
}
cout << ans << endl;
return 0;
}