• HDU 1014 Uniform Generator 模拟题


    解题报告:

    题目大意:有一个可以产生从0到mod-1的范围的随机数的公式是seed(x+1) = [seed(x) + STEP] % MOD,seed(1)=0,利用这个公式产生的随机数可能有mod-1个不同的,也可能少于这么多,给定一个STEP和一个MOD,若对于这一对你数,可以产生mod-1个不同的随机数,则称这个是一个Good Choice否则为Bad Chioce,还有就是注意一下输出的格式。

    模拟题,定义一个数组,标记产生的这个随机数是不是已经产生过了,若这个随机数是已经产生过的,那么接下来就会进入一个周期,这样的话随机数就达不到mod-1个了。

     1 #include<cstdio>
     2 #include<cstring>
     3 int visit[100005];
     4 int main() {
     5     int step,mod,front;
     6     while(scanf("%d%d",&step,&mod)!=EOF) {
     7         memset(visit,0,sizeof(visit));
     8         visit[0]=1;
     9         front=0;
    10         int i;
    11         for(i=1;i<mod;++i) {
    12             front=(front+step)%mod;
    13             if(visit[front])
    14             break;
    15             visit[front]=1;
    16         }
    17         if(i==mod)
    18         printf("%10d%10d    Good Choice\n\n",step,mod);
    19         else
    20         printf("%10d%10d    Bad Choice\n\n",step,mod);
    21     }
    22     return 0;
    23 }
    View Code
  • 相关阅读:
    【程序员的自我修养】读书笔记
    Notepad++ 正则表达式
    【BI】商务智能
    【BI】OLTP与OLAP的区别
    【Linux】条件判断eq、ne、gt、lt、ge、le
    【shell】shell基础脚本合集
    capture同focus
    c++101rule
    老生常谈,正确使用memset
    C语言的数组名和对数组名取地址
  • 原文地址:https://www.cnblogs.com/xiaxiaosheng/p/3100411.html
Copyright © 2020-2023  润新知