virtual hust 2013.6.20 数论基础题目 F - Pseudo-Random Numbers
思路:存在循环节,注意开始一部分不一定是循环的

#include <cstdio> #include <iostream> #include <algorithm> #include <cmath> #include <cstring> #include <vector> using namespace std; long long z,i,mod,l; long long num[10000000]; long long fun(long long x) { return (z*x+i)%mod; } int main() { int t=0; while(scanf("%lld%lld%lld%lld",&z,&i,&mod,&l)!=EOF) { if(z+i+mod+l==0) break; int tnt=0; num[0]=l; int x; while(1) { int tag=1; for(x=tnt-1;x>0;x--) { if(num[x]==num[tnt]) { tag=0; break; } } if(tag==0) break; l=fun(l); //cout<<l<<endl; num[++tnt]=l; } printf("Case %d: %d\n",++t,tnt-x); } return 0; }
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步