# Counting# Modulo# Array

e169 - 粉絲入坑 - V Live & 飯拍影片

🔗 前往 ZeroJudge 原題

題目描述

題目描述了粉絲因偶像影片而入坑的過程,並要求計算在給定的影片分數列表中,有多少對影片的分數和為 100 或 100 的倍數。

解題思路

題目要求計算分數和為 100 或 100 的倍數的影片對數。由於影片分數範圍較大,但我們只需要考慮分數對 100 取模後的結果。因此,我們可以統計每個模數出現的次數,然後利用模數的特性來計算符合條件的影片對數。具體來說,對於模數為 i 的影片,需要找到模數為 100 - i 的影片進行配對。此外,模數為 50 和 0 的情況需要特殊處理,因為它們可以自成一對。

複雜度分析

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

程式碼

#include <iostream>
using namespace std;
long long a,n,c[101];
int main(){
	cin.tie(0); ios::sync_with_stdio(false);
	while(cin >> n){
		if(n==0)break;
		int ans=0;
		for(int i=0;i<=100;++i){
			c[i]=0;
		}
		for(int i=0;i<n;++i){
			cin >> a;
			++c[a%100];
		}
		for(int i=1;i<=49;++i){
			ans+=c[i]*c[100-i];
		}
		long long k=c[50];
		if(k>1)ans+=k*(k-1)/2;
		k=c[0];
		if(k>1)ans+=k*(k-1)/2;
		cout << ans << "\n"; 
	}
}

Discussion