有一個數列,所有的數都是非負整數,你可以進行如下方式進行一次操作(注意一次完整的操作必須先後完成如下兩個步驟):
(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