~cpp
#include <stdio.h>
#include <iostream>
const int NUMBER_NOMAL_DAY=2;
const int NOMAL_DAYS[NUMBER_NOMAL_DAY]={6,7};
int day_simulate(int, int, int*);
void main()
{
int stage;
int* mans;
int* days;
int** mans_days;
printf("횟수를 입력하십시오.\n>>");
scanf("%d",&stage);
days=(int*)malloc(sizeof(int)*stage);
mans=(int*)malloc(sizeof(int)*stage);
mans_days=(int**)malloc(sizeof(int*)*stage);
for (int i=0; i<stage; ++i)
{
printf("시뮬레이션 할 날의 수를 입력하십시오.\n>>");
scanf("%d",days+i);
printf("연합의 수를 입력하십시오.\n>>");
scanf("%d",mans+i);
mans_days[i]=(int*)malloc(sizeof(int)*mans[i]);
printf("각 연합들의 파업주기를 입력하십시오.\n");
for (int j=0; j<mans[i]; ++j)
{
printf(">>");
scanf("%d",mans_days[i]+j);
}
}
for (register int i=0; i<stage; ++i)
{
printf("%d\n",day_simulate(days[i],mans[i],mans_days[i]));
}
for (int i=0; i<stage; ++i)
free(mans_days[i]);
free(mans_days);
free(mans);
}
int day_simulate(int input_day, int input_number_mans, int* input_mans)
{
int play_day=0;
for (register int i=1; i<=input_day; ++i)
{
register int j;
for (j=0;j<NUMBER_NOMAL_DAY;++j)
{
if (0==(i-NOMAL_DAYS[j])%7)
break;
}
if (j==NUMBER_NOMAL_DAY)
{
for (j=0;j<input_number_mans;++j)
{
if (0==i%input_mans[j])
{
++play_day;
break;
}
}
}
}
return play_day;
}