思路
这题用类似进制的思想做,纵所周知,想要表示的几位数,那么在每一位上的
都是可取的.
那么我们直接遍历看是否都存在,看有多少
都存在的段,答案就是这些段
啦.
代码
#include <stdio.h> #include <string.h> using namespace std; const int M=1e4+5; bool vis[M]; int main() { int n,k,num=0,ans=0; scanf("%d%d",&n,&k); for(int i=1;i<=n;i++) { int x; scanf("%d",&x); if(!vis[x]) vis[x]=true,num++; if(num==k) ans++,num=0,memset(vis,false,sizeof vis); } printf("%d\n",++ans); return 0; }