350
还是小水题一道,只需注意一点,题中要求求的是那个循环中的数的个数,有时候一开始的几个数并不在循环中,是后来不断变化才进去的,用点小技巧即可
//============================================================================ // Name : 350.cpp // Author : // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //============================================================================ #include <iostream> #include <cstdio> #include <cstring> using namespace std; int T, Z, I, M, L, ans, t; int flag[100010]; int main() { freopen("a.txt", "r", stdin); T = 0; while(scanf("%d%d%d%d", &Z, &I, &M, &L)&&(Z||I||M||L)){ T++; memset(flag, 0, sizeof(flag)); t = 1; flag[L] = 1; L = (Z*L+I)%M; while(flag[L] == 0){ t++; flag[L] = t; L = (Z*L+I)%M; } ans = t-flag[L]+1; printf("Case %d: %d\n", T, ans); } return 0; }