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

  

posted @ 2011-07-23 22:00  KOKO's  阅读(136)  评论(0编辑  收藏  举报