Consider three political parties. Assume h1 = 3, h2 = 4 andh3 = 8 where hi is the hartal parameter for partyi ( i = 1, 2, 3). Now, we will simulate the behavior of these three parties forN = 14 days. One must always start the simulation on a Sunday and assume that there will be nohartals on weekly holidays (on Fridays and Saturdays).
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | |
Days | ||||||||||||||
Su | Mo | Tu | We | Th | Fr | Sa | Su | Mo | Tu | We | Th | Fr | Sa | |
Party 1 | x | x | x | x | ||||||||||
Party 2 | x | x | x | |||||||||||
Party 3 | x | |||||||||||||
Hartals | 1 | 2 | 3 | 4 | 5 |
The simulation above shows that there will be exactly 5 hartals (on days 3, 4, 8, 9 and 12) in 14 days. There will be nohartal on day 6 since it is a Friday. Hence we lose 5 working days in 2 weeks.
In this problem, given the hartal parameters for several political parties and the value ofN, your job is to determine the number of working days we lose in those N days.
Input
The first line of the input consists of a single integer T giving the number of test cases to follow.
The first line of each test case contains an integer N ( ) giving the number of days over which the simulation must be run. The next line contains another integer P ( ) representing the number of political parties in this case. The i�th of the next P lines contains a positive integerhi (which will never be a multiple of 7) giving the hartal parameter for party i ( ).
Output
For each test case in the input output the number of working days we lose. Each output must be on a separate line.
Sample Input
2 14 3 3 4 8 100 4 12 15 25 40
Sample Output
5 15
题意:
给出天数,以及党的个数,还有罢工的周期,求出最后罢工的天数,星期五以及星期六不算在内;
<pre name="code" class="cpp">#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int main()
{
int n;
int d;
int p;
int a[4000];
int b[4000];
cin >> n;
while(n --)
{
cin >> d;
cin >> p;
memset(b,0,sizeof(b));
for(int i = 1; i <= p; i ++)
{
cin >> a[i];
for(int j = a[i]; j <= d; j += a[i])
b[j] = 1;
}
int day= 0;
for(int k = 1; k <= d; k++)
{
if(b[k] && (k +7) % 7 - 1 != 5 && (k +7) %7 + 7- 1 != 6)
day ++ ;
}
printf("%d\n",day);
}
return 0;
}