本蒟蒻自己想的方法,非常好,哈哈哈哈哈哈哈
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,na,nb,a[50000],b[50000],fl[20000][20000],qja[20000],qjb[20000];/*我就是在这个地方入坑,看了数据之后觉得开的小,后来我这个方法扩展了一下数组,导致了RE。*/
int p,q,ansa,ansb;
int main()
{
freopen("rps.in","r",stdin);
freopen("rps.out","w",stdout);
cin>>n>>na>>nb;
for(int i=1;i<=na;i++) cin>>a[i];
for(int i=1;i<=nb;i++) cin>>b[i];
for(int i=0;i<5;i++)
for(int j=0;j<5;j++)
if(i==j) fl[i][j]=9999;
fl[0][2]=1;fl[0][3]=1;//谁强,谁爆炸一波
fl[1][0]=1;fl[1][3]=1;
fl[2][1]=1;fl[2][4]=1;
fl[3][2]=1;fl[3][4]=1;
fl[4][0]=1;fl[4][1]=1;
for(int i=1;i<=na;i++)
for(int j=1;j<=nb;j++)
{
a[i+na*j]=a[i];//扩展数组a
}
for(int i=1;i<=nb;i++)
for(int j=1;j<=na;j++)
{
b[i+nb*j]=b[i];//扩展数组b
}
for(int i=1;i<=na*nb;i++)//巧妙运用前缀和,啊哈哈哈哈
{
if(fl[a[i]][b[i]]==1)
{qja[i]=qja[i-1]+1;qjb[i]=qjb[i-1];}
if(fl[a[i]][b[i]]==0)
{qja[i]=qja[i-1];qjb[i]=qjb[i-1]+1;}
if(fl[a[i]][b[i]]==9999)
{qja[i]=qja[i-1];qjb[i]=qjb[i-1];}
}
p=n/(na*nb);
q=n%(na*nb);
ansa=qja[na*nb]*p+qja[q];
ansb=qjb[na*nb]*p+qjb[q];
cout<<ansa<<" "<<ansb;
fclose(stdin);fclose(stdout);
return 0;
}