350 - Pseudo-Random Numbers

来源:互联网 发布:阿里云域名访问 编辑:程序博客网 时间:2024/04/29 08:37

题目:350 - Pseudo-Random Numbers


题目大意:按照给定的方式求余数,求这样子余数的循环长度(就是首尾相同的余数之间的长度 包扩首位);


解题思路:注意首位相同的不仅仅指与第一个余数相同的,这样第三组数据就过不去了。所以需要开一个数组来存放每次的余数,然后每次得出余数就与前面的进行比较,发现相同就得到长度。


#include<stdio.h>const int N = 10000;int z, i, m, l;int s[N];int main() {int k = 1;while(scanf("%d %d %d %d", &z, &i, &m, &l) && z &&i &&m &&l) {int  n = 1, j;s[0] = (l * z + i) % m;while(1) {s[n] = (s[n - 1] * z + i) % m;for( j = 0; j < n; j++ )if(s[n] == s[j]) {break;}if(j != n)break;n++;}printf("Case %d: %d\n", k, n - j);k++;}return 0;}


0 0
原创粉丝点击