CSDN编程挑战——《-3+1》
生活随笔
收集整理的這篇文章主要介紹了
CSDN编程挑战——《-3+1》
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
-3+1
題目詳情:
有一個(gè)數(shù)列,所有的數(shù)都是非負(fù)整數(shù),你可以進(jìn)行如下方式進(jìn)行一次操作(注意一次完整的操作必須先后完成如下兩個(gè)步驟):
(1) 任選一個(gè)不小于3的數(shù),把它減少3。
(2) 任選一個(gè)數(shù)把它增加1。
請(qǐng)問,最多能夠操作多少次?
輸入格式:
多組數(shù)據(jù),每組數(shù)據(jù)第一行是一個(gè)正整數(shù)n,表示數(shù)列中數(shù)的個(gè)數(shù)。(1<=n<=20000)
第二行包含n個(gè)空格分隔的非負(fù)整數(shù),每個(gè)整數(shù)不超過1000000。
輸出格式:
對(duì)每組數(shù)據(jù)輸出一行,表示最多可以進(jìn)行的操作次數(shù)。
答題說明:
輸入樣例
1
10
2
10 11
輸出樣例:
4
10
#include "stdio.h" #include "string.h" int main() {long long res,add; //res結(jié)果,add表示要加1的次數(shù) int n,a[3];while(scanf("%d",&n)!=EOF){memset(a,0,sizeof(a)); add=0; res=0;for(int i=0,tmp;i<n;i++){scanf("%d",&tmp);add+=tmp/3;a[tmp%3]++;}res=add;while(add-->0){// 任選一個(gè)數(shù)把它增加1,有優(yōu)先級(jí)的 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; } /* 注意:結(jié)果值為int類型,數(shù)據(jù)大時(shí)可能會(huì)溢出因此須定義為long long類型 */
CSDN挑戰(zhàn)編程交流群:372863405?????????????
總結(jié)
以上是生活随笔為你收集整理的CSDN编程挑战——《-3+1》的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二叉树学习——简单入门题
- 下一篇: CSDN编程挑战——《进制转换》