题目:
题意:
给出一周的是否上课状况和需要上课天数,求需要呆多少天才能达到目标上课天数。
思路:
模拟。
对最后一周的上课情况进行模拟,求出最后一周最短的天数,然后与前几周的数目*7相加即为答案。
代码如下:
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e4+5;
typedef long long ll;
int t;
ll k;
int week[10];
int main()
{
scanf("%d",&t);
while (t--)
{
ll sum=0,ci=0;
scanf("%lld",&k);
for (int i=0;i<7;i++)
{
scanf("%d",&week[i]);
if(week[i])
{
ci++;
}
}
ll yu=k%ci;
ll zhou=k/ci;
if(yu==0)
{
yu=ci;
sum+=(zhou-1)*7;
}
else
{
sum+=zhou*7;
}
if(yu)
{
ll sheng=0x3f3f3f3f;
for (int i=0;i<7;i++)
{
if(week[i])
{
ll fen=0,tian=0;
for (int j=i;;j=(j+1)%7)
{
if(tian>=yu)
{
break;
}
fen++;
if(week[j])
{
tian++;
}
}
sheng=min(fen,sheng);
}
}
sum+=sheng;
}
printf("%lld\n",sum);
}
return 0;
}