http://115.159.40.116/problem_show.php?pid=5696
題目描述
輸入
輸出
樣例輸入
3 1 2 3 3 5 1 2
樣例輸出
9 15
/*題目炸看上去挺複雜,又是+*又是可以加括號的。
其實找幾組數一算髮現只有出現1的地方需要用加法,
ps:至於怎麼加、加在哪可自行思考
先在數組中掃一遍1,同時先計算加法(相當於添加括號)
然後累乘即可
我的程序需要注意幾組特殊數據
1
1
12
1 1 1 1 1 1 1 1 1 1 1 1
4
2 1 1 2
答案分別是
1
81
9
*/
#include <stdio.h>
int main() {
int n, num[10005], i;
while(~scanf("%d", &n)) {
num[0] = 21, num[n+1] = 21;
for(i = 1; i <= n; i++) scanf("%d", &num[i]);
if(n > 1) {//考慮特殊數據
for(i = 1; i <= n; i++) {
if(num[i] == 1) { /*考慮特殊數據*/
if(num[i-1] <= num[i+1] || (num[i-1]==2&&num[i+1]==1)) {
num[i] += num[i-1];
num[i-1] = 1;
} else {
num[i+1]++;
i++;//只是爲了減少一些不必要的循環
}
}
}
}
for(i = 2; i <= n; i++) num[1] = (num[1]*num[i])%10086;
printf("%d\n", num[1]);
}
return 0;
}