# Array# Greedy# Simple Math

f071 - 2. 刮刮樂 (Lottery)

🔗 前往 ZeroJudge 原題

題目描述

題目描述一個刮刮樂的獎金計算方式。給定三個數字 a, b, c,以及五組數字 (n1, m1), (n2, m2), (n3, m3), (n4, m4), (n5, m5)。獎金計算方式如下:首先,獎金為 n[a] + n[b],其中 n[i] 代表數字 i 出現的次數。如果數字 c 出現了,則獎金減去 n[c],如果減去後獎金小於 0,則獎金設為 0。如果數字 c 沒有出現,則獎金乘以 2。最後輸出獎金。

解題思路

這題的解題思路非常直接。首先,我們需要建立一個陣列 n 來記錄每個數字出現的次數。然後,根據題目描述,計算獎金。如果數字 c 出現了,則減去 n[c],如果沒有出現,則乘以 2。最後輸出獎金。由於題目限制了數字的範圍,因此可以使用固定大小的陣列來記錄每個數字的出現次數。

複雜度分析

  • 時間複雜度: O(1)
  • 空間複雜度: O(1)

程式碼

#include <stdio.h>
int n[101];
int main(){
	int a,b,c,n1,n2,n3,n4,n5,m1,m2,m3,m4,m5,ans=0;
	scanf("%d%d%d%d%d%d%d%d%d%d%d%d%d",&a,&b,&c,&n1,&n2,&n3,&n4,&n5,&m1,&m2,&m3,&m4,&m5);
	n[n1]+=m1;n[n2]+=m2;n[n3]+=m3;n[n4]+=m4;n[n5]+=m5;
	ans=n[a]+n[b];
	(n[c])?ans-=n[c],(ans<0)?ans=0:0:ans<<=1;
	printf("%d",ans);
}

Discussion