範例程式碼 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;
}