D1T1想当然的模拟了。
不过为了方便起见,我们可以先手动算一个f数组,这样的话,在比较的时候会异常简单。这可是一个非常有用的技巧。
#include<bits/stdc++.h>
using namespace std;
int n,na,nb,x,y;
int a[205],b[205];
int fa,fb;
const int f[5][5]={
0,-1,1,1,-1,
1,0,-1,1,-1,
-1,1,0,-1,1,
-1,-1,1,0,1,
1,1,-1,-1,0,
};
int main()
{
freopen("in.txt","r",stdin);
scanf("%d%d%d",&n,&na,&nb);
for(int i=0;i<na;i++)scanf("%d",&a[i]);
for(int i=0;i<nb;i++)scanf("%d",&b[i]);
for(int i=0;i<n;i++)
{
x=a[i%na],y=b[i%nb];
if(f[x][y]==1)fa++;
if(f[y][x]==1)fb++;
}
cout<<fa<<" "<<fb;
return 0;
}
还有一点,如果下标是从0开始的话,取模操作也很简单,不用特别判一下。