一个社会研究组织决定通过一组简单的参数来模拟国家政党的行为.
第一个参数一个正整数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; }
时间: 2024-10-06 06:01:05