範例程式碼 uva11536

//uva11536
#include <bits/stdc++.h>
using namespace std;

int table[1000001] = {0,1,2,3};

int main(){
//	freopen("out11536.txt","w",stdout);
	int T;
	cin >> T;
	int N,M,K,Case=0;
	
	while(T--){
		// 2 < N < 1000001, 0 < M < 1001, 1 < K < 101
		cin >> N >> M >> K;
		
		for(int i=4 ; i < N ; ++i)
			table[i] = (table[i-3] + table[i-2] + table[i-1])%M + 1;
				
		int cur;
		int ans = 1000001;
		int sumK = 0;
		int check[101] = {0};
		queue<int> Q;
		for(int i=1 ; i <= N ; ++i){
			cur = table[i];
			if(1 <= cur && cur <= K){
				Q.push(i);
				if(!check[cur]) ++sumK;
				check[cur] = i;  // store the newest of every element [1,K]
				// ᭱s[JpƦrANe 
				while(Q.front() != check[table[Q.front()]])
					Q.pop();
				if(sumK == K){
					ans = min(ans,i-Q.front()+1);
				}
			}
		}
		cout << "Case " << ++Case << ": ";
		if(sumK == K){
			cout << ans << endl;
		}else{
			cout << "sequence nai" << endl;
		}
	}
	
	
	return 0;
}