#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; } |