#include<iostream>
#include<string>
#include<cstring>
#include<sstream>
#include<cctype>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stack>
#include<fstream>
#include<cstdlib>
#include<vector>
#include<map>
#include<utility>
#include<iomanip>
#include<queue>
using namespace std;
#define clr(a) memset(a,0,sizeof(a))
#define PB push_back
int main()
{
int Z,I,M,L,i,cs=1,end,j;
map<int, int>mp;
vector<int>V;
while(cin>>Z>>I>>M>>L)
{
if(Z==0 && I==0 && M==0 && L==0) return 0;
mp.clear();
V.clear();
V.PB(L);
mp[L]=1;
i=1;
while(1)
{
L=((Z*L)+I)%M;
if(mp[L]==1)
{
end=L;
break;
}
else
{
mp[L]=1;
i++;
V.PB(L);
}
}
if(i!=1)
for(j=0;j<V.size();j++)
{
//cout<<V[j]<<" ";
if(V[j]==end)
break;
i--;
}
cout<<"Case "<<cs<<": "<<i<<endl;
cs++;
}
return 0;
}
No comments:
Post a Comment