首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

HDU 4972 數學題:足球比分從淨勝球推導

     編輯:C++ 入門

問題描述

兩隊 n 場比賽,每場只記錄淨勝球絕對值(不知勝負)。求可能的最終比分對數。

關鍵觀察

設總進球數為 S,淨勝球為 D。已知 D(最後一場淨勝球),若知 S 則 x=(S+D)/2, y=(S-D)/2 唯一確定。
每場比賽:淨勝球變化 ±1 或 ±3(1→2 或 2→1 時總進球 +1,其餘 +3)。
設 cnt = 1↔2 切換的場數。則總進球和可能值有 cnt+1 種(0~cnt 次 +1)。

答案公式

  • 若最終淨勝球 = 0:答案 = cnt+1(比分對稱,每種總和對應一種平局)
  • 否則:答案 = 2*(cnt+1)(勝負互換)

無效輸入判斷:連續相同淨勝球≠1,或相鄰場差值 >3 → 輸出 0。

代碼

int main() {
    int T; scanf("%d", &T);
    for (int cs=1; cs<=T; cs++) {
        int n, cnt=0, last=0, cur; bool ok=1;
        scanf("%d", &n);
        for (int i=0; i3) ok=0;
            if ((cur==1&&last==2) || (cur==2&&last==1)) cnt++;
            last = cur;
        }
        int ans = ok ? (last==0 ? cnt+1 : 2*cnt+2) : 0;
        printf("Case #%d: %d\n", cs, ans);
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved