有一個數列,所有的數都是非負整數,你可以進行如下方式進行一次操作(注意一次完整的操作必須先後完成如下兩個步驟):
(1) 任選一個不小於3的數,把它減少3。
(2) 任選一個數把它增加1。
請問,最多能夠操作多少次?
輸入格式:
多組數據,每組數據第一行是一個正整數n,表示數列中數的個數。(1<=n<=20000)
第二行包含n個空格分隔的非負整數,每個整數不超過1000000。
輸出格式:
對每組數據輸出一行,表示最多可以進行的操作次數。
輸入樣例
1
10
2
10 11
輸出樣例:
4
10
#include "stdio.h" #include "string.h" int main() { long long res,add; //res結果,add表示要加1的次數 int n,a[3]; while(scanf("%d",&n)!=EOF) { memset(a,0,sizeof(a)); add=0; res=0; for(int i=0,tmp;i0) { // 任選一個數把它增加1,有優先級的 if(a[2]>0){ a[2]--; a[0]++; res++; add++; }else if(a[1]>0){ a[1]--; a[2]++; }else if(a[0]>0){ a[0]--; a[1]++; } } printf("%I64d\n",res); } return 0; } /* 注意:結果值為int類型,數據大時可能會溢出因此須定義為long long類型 */
CSDN挑戰編程交流群:372863405