把所有情况打表,然后随便暴力。
1 #include<cstdio> 2 using namespace std; 3 int n,an,bn,p1,p2; 4 int a[10001],b[10001]; 5 bool f[6][6]; 6 int ans1,ans2; 7 void init() 8 { 9 f[0][0]=0; f[0][0]=0; 10 f[0][1]=0; f[1][0]=1; 11 f[1][1]=0; f[1][1]=0; 12 f[0][2]=1; f[2][0]=0; 13 f[1][2]=0; f[2][1]=1; 14 f[2][2]=0; f[2][2]=0; 15 f[0][3]=1; f[3][0]=0; 16 f[1][3]=1; f[3][1]=0; 17 f[2][3]=0; f[3][2]=1; 18 f[3][3]=0; f[3][3]=0; 19 f[0][4]=0; f[4][0]=1; 20 f[1][4]=0; f[4][1]=1; 21 f[2][4]=1; f[4][2]=0; 22 f[3][4]=1; f[4][3]=0; 23 f[4][4]=0; f[4][4]=0; 24 } 25 int main() 26 { 27 scanf("%d%d%d",&n,&an,&bn); 28 init(); 29 for(int i=1;i<=an;i++) scanf("%d",&a[i]); 30 for(int i=1;i<=bn;i++) scanf("%d",&b[i]); 31 for(int i=1;i<=n;i++) 32 { 33 p1++; p2++; 34 if(p1>an) p1=1; 35 if(p2>bn) p2=1; 36 ans1+=f[a[p1]][b[p2]]; 37 ans2+=f[b[p2]][a[p1]]; 38 } 39 printf("%d %d ",ans1,ans2); 40 return 0; 41 }