1 #include <iostream> 2 #include <sstream> 3 #include <set> 4 #include <string> 5 #include <algorithm> 6 #include <vector> 7 using namespace std; 8 9 #define GI ({long long int _t; scanf("%lld", &_t); _t;}) 10 #define FOR(i, a, b) for (int i=a; i<b; i++) 11 #define REP(i, a) FOR(i, 0, a) 12 template<class T> string toString(T n){ostringstream ost;ost<<n;ost.flush();return ost.str();} 13 int toInt(string s){int r=0;istringstream sin(s);sin>>r;return r;} 14 #define DBG(x) cout << #x << "::" << x << endl; 15 #define DBGV(_v) { REP(_i, _v.size()) { cout << _v[_i] << "\t";} cout << endl;} 16 17 int main() { 18 long long int z, i, m, l, kase=0; 19 while (scanf("%lld%lld%lld%lld", &z, &i, &m, &l) != -1 && z != 0) { 20 set <long long int> cycle; 21 int res = 0; 22 l = (z*l+i)%m; 23 while (cycle.find(l) == cycle.end()) { 24 cycle.insert(l); 25 l = (z*l+i)%m; 26 res++; 27 } 28 kase++; 29 printf("Case %lld: %d\n", kase, res); 30 } 31 return 0; 32 }