题目大意:
给定一个参数h表示两次罢工之间的时间间隔,但星期五星期六不会有罢工;然后给定p个h和总的时间n。计算再n天之内有多少天受罢工影响。
思路:
用一个数组直接进行模拟,值得注意的是由由于要判断星期五,六,天数要从0开始编号,这样可以用i%7==5||i%7==6进行判断
代码如下:
<span style="font-size:18px;">#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int vis[40000],n;
void f(int h)
{
int i=h-1;
while(i<n)
{
if(i%7!=5&&i%7!=6)
vis[i]=1;
i+=h;
}
}
int main()
{
int i,j,k,t,p,cnt;
scanf("%d",&t);
while(t--)
{
cnt=0; memset(vis,0,sizeof(vis));
scanf("%d%d",&n,&p);
while(p--)
{
scanf("%d",&k);
f(k);
}
for(i=0;i<n;i++)
if(vis[i])
cnt++;
printf("%d\n",cnt);
}
return 0;
}
</span>