枚举题,思路简单,过程繁琐。
#include <iostream>
using namespace std;
int main()
{
int T;
scanf("%d", &T);
for (int t = 1; t <= T; t ++ )
{
printf("Case #%d: ", t);
int n, m, q;
cin >> n >> m >> q; //n, m, q 分别代表书的总页数,残缺页数,读者人数
bool st[n] = {false}; //用布尔数组表示书页状态(是否缺页),且每次都初始化为0
int M[m], Q[q]; //定义缺页数组和读者数组
for (int i = 0; i < m; i ++ )
{
scanf("%d", &M[i]);
st[M[i]] = true; //标记缺页
}
int res = 0;
for (int i = 0; i < q; i ++ )
{
scanf("%d", &Q[i]);
int p = 1;
while (p * Q[i] <= n) //遍历该成员所读页数的整数倍
if (!st[p ++ * Q[i]]) res ++ ; //不缺页则总页数加1
}
printf("%d\n", res);
}
}