因为循环次数小,直接建立二维方程组确定每一步的关系
#include <bits/stdc++.h>
using namespace std;
int res[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() {
int n,na,nb;
scanf("%d%d%d",&n,&na,&nb);
vector<int>a,b;
for (int i = 0; i <na ; ++i) {
int tmp;
scanf("%d",&tmp);
a.push_back(tmp);
}
for (int i = 0; i <nb ; ++i) {
int tmp;
scanf("%d",&tmp);
b.push_back(tmp);
}
int ans1=0,ans2=0;
for (int i = 0; i < n; ++i) {
int ta=i%na,tb=i%nb;
if (res[a[ta]][b[tb]]==1)
ans1++;
else if (res[a[ta]][b[tb]]==-1)
ans2++;
}
printf("%d %d\n",ans1,ans2);
return 0;
}