#include<iostream>
#include<ctime>//
using namespace std;
int nww(int a, int b)
{
int c=a, d=b;
while(a!=b)
{
if(a>b)
a-=b;
else
b-=a;
}
return (c*d)/a;
}
int main()
{
double t0=clock();//
int n, m, i;
cin>>n;
int *start=new int[n];
for(i=0;i<n;i++)
cin>>start[i];
cin>>m;
int *wzor=new int[m];
string pomoc;
cin>>pomoc;
for(i=0;i<m;i++)
{
if(pomoc[i]=='W')
wzor[i]=1;
else
wzor[i]=-1;
}
long long wyn, cykle, ile, rodz;
wyn=nww(n,m);
cykle=wyn/n;
ile=wyn/m;
rodz=n/ile;
int *kasa=new int[rodz];
for(i=0;i<rodz;i++)
{
int pom=0;
for(int j=0;j<cykle;j++)
{
pom=pom+wzor[i+((j*n)%m)];
}
kasa[i]=pom;
}
bool dziala=true;
long long licz=0;
while(dziala)
{
for(i=0;i<n;i++)
{
start[i]=start[i]+kasa[(i%rodz)];
if(start[i]==0)
{
dziala=false;
break;
}
}
licz++;
}
licz=licz*wyn;
cout<<licz;
delete [] start;
delete [] wzor;
delete [] kasa;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | #include<iostream> #include<ctime>// using namespace std; int nww(int a, int b) { int c=a, d=b; while(a!=b) { if(a>b) a-=b; else b-=a; } return (c*d)/a; } int main() { double t0=clock();// int n, m, i; cin>>n; int *start=new int[n]; for(i=0;i<n;i++) cin>>start[i]; cin>>m; int *wzor=new int[m]; string pomoc; cin>>pomoc; for(i=0;i<m;i++) { if(pomoc[i]=='W') wzor[i]=1; else wzor[i]=-1; } long long wyn, cykle, ile, rodz; wyn=nww(n,m); cykle=wyn/n; ile=wyn/m; rodz=n/ile; int *kasa=new int[rodz]; for(i=0;i<rodz;i++) { int pom=0; for(int j=0;j<cykle;j++) { pom=pom+wzor[i+((j*n)%m)]; } kasa[i]=pom; } bool dziala=true; long long licz=0; while(dziala) { for(i=0;i<n;i++) { start[i]=start[i]+kasa[(i%rodz)]; if(start[i]==0) { dziala=false; break; } } licz++; } licz=licz*wyn; cout<<licz; delete [] start; delete [] wzor; delete [] kasa; } |
English