#include<cstdio>
#include<map>
#include<cstring>
using namespace std;
const int mod=1333331;
int A[150],B[150],c[150],T[150];
int t;
bool e[mod];
int n,w,x;
int H()
{
int y=0;
for(int i=1;i<=n;i++)
y=(y*10+(c[i]+t)%T[i])%mod;
return y;
}
int awake()
{
int y=0;
for(int i=1;i<=n;i++)
y+=(c[i]+t)%T[i]<A[i];
return y;
}
void check()
{
for(int i=1;i<=n;i++)
{
if((c[i]+t)%T[i]==A[i]&&w>=n-w)
c[i]=-t;
}
}
int kase=0;
int main()
{
while(scanf("%d",&n)==1&&n)
{
for(int i=1;i<=n;i++)
{
scanf("%d%d%d",&A[i],&B[i],&c[i]);
c[i]--;
T[i]=A[i]+B[i];
}
memset(e,0,sizeof(e));
t=0;
x=H();
while(!e[x])
{
e[x]=1;
w=awake();
if(w==n)break;
t++;
check();
x=H();
}
printf("Case %d: ",++kase);
if(w==n)printf("%d\n",t+1);
else printf("%d\n",-1);
}
return 0;
}
UVa12108 代码短。。。。
最新推荐文章于 2022-02-02 23:05:39 发布