• Source
    1. #include<bits/stdc++.h>
    2. #define mx 0x3f3f3f3f
    3.  
    4. using namespace std;
    5.  
    6. int make[1000005]={0,1,2,3},cnt[105];
    7.  
    8. int main()
    9. {
    10.  
    11. int test,n,m,k,i,j,kcnt,ans,x;
    12.  
    13. scanf("%d",&test);
    14.  
    15. for(i=1;i<=test;i++)
    16. {
    17. scanf("%d%d%d",&n,&m,&k);
    18.  
    19. for(j=4;j<=n;j++)
    20. {
    21. make[j] = (make[j-1] + make[j-2] + make[j-3]) % m + 1;
    22. }
    23.  
    24. ans = mx;
    25.  
    26. kcnt = 0;
    27.  
    28. x = 1;
    29.  
    30. for(j=1;j<=n;j++)
    31. {
    32. if(make[j]<=k)
    33. {
    34. if(!cnt[make[j]])
    35. {
    36. kcnt++;
    37. }
    38.  
    39. cnt[make[j]]++;
    40. }
    41.  
    42. if(kcnt==k)
    43. {
    44. while(make[x]>k || cnt[make[x]]>1 )
    45. {
    46. if(make[x]<=k && cnt[make[x]]>1)
    47. {
    48. cnt[make[x]]--;
    49. }
    50.  
    51. x++;
    52. }
    53.  
    54. ans = min(ans,j-x+1);
    55. }
    56. }
    57.  
    58. if(ans==mx)
    59. {
    60. printf("Case %d: sequence nai\n",i);
    61. }
    62. else
    63. {
    64. printf("Case %d: %d\n",i,ans);
    65. }
    66.  
    67. memset(cnt,0,sizeof cnt);
    68. }
    69.  
    70. return 0 ;
    71. }
    72.