注意是顺时针转!!!
View Code
#include<stdio.h>
#define N 360
bool a[5][N+N];
int v[5];
int main()
{
int i,j;
int n;
while(scanf("%d",&v[0])!=EOF)
{
for(i=0;i<5;i++)
{
for(j=0;j<360;j++)
{
a[i][j]=0;
}
}
int add=0;
int fi,end;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d%d",&fi,&end);
for(j=fi;j<=end+fi;j++)
{
a[add][j%360]=1;
}
}
add++;
while(add<5)
{
scanf("%d",&v[add]);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d%d",&fi,&end);
for(j=fi;j<=end+fi;j++)
{
a[add][j%360]=1;
}
}
add++;
}
bool rt=0;
bool t1,t2,t3,t4,t5;
for(i=0;i<=360;i++)
{
int tv1=360-(v[0]*i)%360;
int tv2=360-(v[1]*i)%360;
int tv3=360-(v[2]*i)%360;
int tv4=360-(v[3]*i)%360;
int tv5=360-(v[4]*i)%360;
for(j=0;j<=359;j++)
{
t1=a[0][(tv1+j)%360];
t2=a[1][(tv2+j)%360];
t3=a[2][(tv3+j)%360];
t4=a[3][(tv4+j)%360];
t5=a[4][(tv5+j)%360];
if(t1==1&&t2==1&&t3==1&&t4==1&&t5==1)
{
printf("%d\n",i);
rt=1;
break;
}
}
if(rt==1)break;
}
if(rt==0)
printf("none\n");
}
}