代码演示
#include < iostream >
using namespace std;
//滑动窗口法 :定长 或不定长(双指针法)
long long ans = -1, temp = 1, cnt; //cnt为0的计数器
int main() {
char num[2000];
FILE *fp = freopen("E:/c语言代码/文件数据/欧拉计划input8.txt", "r", stdin); //读取文件
for (int i = 0; i < 1000;) {
char ch;
fscanf(fp, "%c", &ch);
if (ch >= '0' && ch <= '9') num[i++] = ch;
} //输入数据
for (int i = 0; i < 1000; i++) {
if (i < 13) { //13为窗口固定宽度
temp *= num[i] - '0';
} else {
//num[i]进入窗口
if (num[i] == '0') cnt++; //0的个数加一
else temp *= num[i] - '0';
//num[i - 13] 退出窗口
if (num[i - 13] == '0') cnt--; //0退出窗口
else temp /= num[i - 13] - '0';
}
if (cnt == 0) ans = ans > temp ? ans : temp;
}
cout << ans << endl;
return 0;
}