uva-10050-模拟水题

一个社会研究组织决定通过一组简单的参数来模拟国家政党的行为.
第一个参数一个正整数h(叫做罢工参数),用于指示在对应的政党在
俩个连续休假之间的平均天数.虽然这个参数太简单了,它不是最完美的参数.
但是它还是可以用来预测因为罢工带来的损失.以后是计算的例子.
考虑三个政党,假设h1=3,h2=4,h3=8,hi代表i政党的罢工参数.下一步,我们将模拟这三个
政党在N=14天内的行为.模拟的天数总数从周天开始,假设在周末假期(周五和周六)没有罢工.


以上的模拟表明在14天内有五天罢工.在第六天没有罢工,因为它是周五,因此我们在俩周内
有5天是没有工作的.

在这个问题内,给你几个政党的罢工参数和N的值,你的任务是计算出在N天内有多少天因为
罢工没有工作.


输入
输入的第一行是单个int类型的T表示有多少组测试用例.
每一个测试用例的第一行包含一个int N(7<=N<=3650)表示这次模拟的天数.
下一行包含另外一个int P(1<=p<=100)代表政党的数目,
P后面的第i行包含一个正整数hi(永远不会是7的倍数)表示政党i的罢工参数.


输出

AC:0ms

#include<stdio.h>
#include<iostream>
#include<queue>
#include<memory.h>
using namespace std;

const int N = 3650+10;
const int P = 100+10;

int main()
{
	freopen("d:\1.txt", "r", stdin);
	int t;
	cin >> t;
	while (t--)
	{
		int n, p;
		cin >> n;
		cin >> p;
		int a[P][N];
		memset(a, 0, sizeof(a));
		int pp[P];
		memset(pp, 0, sizeof(pp));
		for(int i = 1; i <= p; i++)
			cin >> pp[i];
		for(int i = 1; i <= n; i++)
		{
			if(i % 7 == 6||i%7==0)
				continue;
			for(int j = 1; j <= p; j++)
				if(i%pp[j]==0)
				{
					a[j][i] = 1;
				}
		}

		int total = 0;
		for(int i = 1; i <= n; i++)
		{
			if(i % 7 == 6||i%7==0)
				continue;
			for(int j = 1; j <= p; j++)
				if(a[j][i] == 1)
				{
					total++;
					break;
				}
		}
		cout<<total<<endl;
	}
	return 0;
}

  

原文地址:https://www.cnblogs.com/shuiyonglewodezzzzz/p/6985893.html