#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int vis[1010],d[1000100],n,m,k;
bool ok(){
for(int i=1;i<=k;i++)
if(!vis[i]) return 0;
return 1;
}
int main(){
int T,t=1;
scanf("%d",&T);
while(T--){
memset(vis,0,sizeof(vis));
scanf("%d%d%d",&n,&m,&k);
d[1]=1;d[2]=2;d[3]=3;
for(int i=4;i<=n;i++)
d[i] = (d[i-3] + d[i-2] + d[i-1]) % m + 1;
int l=1,r=1,res=10000000,ans=0;
while(l<=r && r<=n && l<=r){
if(ans==k){
res=min(res,r-l);
vis[d[l]]--;
if(!vis[d[l]] && d[l]<=k) ans--;
l++;
}else{
if(!vis[d[r]] && d[r]<=k) ans++;
vis[d[r]]++;
r++;
}
}
printf("Case %d: ",t++);
if(res==10000000)
printf("sequence nai\n");
else printf("%d\n",res);
}
}
uva 11536 尺取法 滑动窗口
最新推荐文章于 2022-05-03 18:48:23 发布