问题描述:
计算机模拟通常需要随机数。生成伪随机数的一种方法是通过窗体的函数

seed(x+1) = [种子 (x) + STEP]% MOD

其中 "%" 是模量运算符。

这样的函数将生成0和 MOD-1 之间的伪随机数 (种子)。此窗体的函数的一个问题是, 它们总是会反复生成相同的模式。为了最大限度地减少这种影响, 仔细选择 STEP 和 MOD 值可以在 (包括) 0 和 MOD-1 之间实现所有值的均匀分布。

例如, 如果 STEP = 3, MOD = 5, 则该函数将在重复循环中生成一系列伪随机数0、3、1、4、2。在本例中, 函数的每个 MOD 迭代都将生成0和 MOD-1 之间的所有数字, 包括0和 MOD-1。请注意, 根据每次发生种子 (x) 的函数生成相同 seed(x+1) 的性质, 这意味着如果一个函数将生成介于0和 MOD-1 之间的所有数字, 则它将在每个 MOD 迭代中均匀地生成伪随机数。

如果 STEP = 15, MOD = 20, 则该函数将生成系列0、15、10、5 (如果初始种子不是 0, 则生成任何其他重复系列)。这是一个很好的选择 STEP 和 MOD, 因为没有初始种子将生成所有的数字从0和 MOD-1。

您的程序将确定 STEP 和 MOD 的选择是否会生成伪随机数的均匀分布
输入:
每行输入将包含一对整数的 STEP 和 MOD 按顺序 (1 < = STEP, MOD < = 100000)。
3 5
15 20
63923 99999
 
 
输出:
对于每行输入, 您的程序应打印步骤值右对齐列1到 10, MOD 值右对齐在列11到20和 "好的选择" 或 "坏选择" 左对齐在第25列。当选择 step 和 MOD 将生成 MOD 数字时, 生成包括0和 MOD-1 之间的所有数字时, 应打印 "良好选择" 消息。否则, 程序应打印消息 "错误的选择"。在每个输出测试集之后, 程序应只打印一个空行。
         3         5    Good Choice

        15        20    Bad Choice

     63923     99999    Good Choice
 
#include <iostream>
#include<cstring>
#include<cstdlib>
#include<stdio.h>
using namespace std;
int main()
{
    int step,mode;
    while(cin>>step>>mode){
        int i,j,flag;
        for(i=0;i<mode;i++)
        {
            char num[100001]={'0'};
            int seed;
            seed=(i+step%mode)%mode;
            num[seed]='1';
            for(j=1;j<mode;j++)
                {
                    flag=0;
                    seed=(seed+step%mode)%mode;
                    if(num[seed]=='1')
                    {
                        flag=1;
                        break;
                    }
                    else num[seed]='1';
                }
                if(!flag)
                    break;
        }
        printf("%10d%10d    ",step,mode);
        if(!flag)
            printf("%-s\n","Good Choice");
            else printf("%-s\n","Bad Choice");
            printf("\n");
    }
    return 0;
}

杭电OJ--1014的更多相关文章

  1. C#利用POST实现杭电oj的AC自动机器人,AC率高达50%~~

    暑假集训虽然很快乐,偶尔也会比较枯燥,,这个时候就需要自娱自乐... 然后看hdu的排行榜发现,除了一些是虚拟测评机的账号以外,有几个都是AC自动机器人 然后发现有一位作者是用网页填表然后按钮模拟,, ...

  2. 杭电oj 2095 & 异或^符号在C/C++中的使用

    异或^符号,在平时的学习时可能遇到的不多,不过有时使用得当可以发挥意想不到的结果. 值得注意的是,异或运算是建立在二进制基础上的,所有运算过程都是按位异或(即相同为0,不同为1,也称模二加),得到最终 ...

  3. 用python爬取杭电oj的数据

    暑假集训主要是在杭电oj上面刷题,白天与算法作斗争,晚上望干点自己喜欢的事情! 首先,确定要爬取哪些数据: 如上图所示,题目ID,名称,accepted,submissions,都很有用. 查看源代码 ...

  4. 杭电oj 4004---The Frog Games java解法

    import java.util.Arrays; import java.util.Scanner; //杭电oj 4004 //解题思路:利用二分法查找,即先选取跳跃距离的区间,从最大到最小, // ...

  5. 『ACM C++』HDU杭电OJ | 1415 - Jugs (灌水定理引申)

    今天总算开学了,当了班长就是麻烦,明明自己没买书却要带着一波人去领书,那能怎么办呢,只能说我善人心肠哈哈哈,不过我脑子里突然浮起一个念头,大二还要不要继续当这个班委呢,既然已经体验过就可以适当放下了吧 ...

  6. 杭电oj————2057(java)

    question:A+ B again 思路:额,没啥思路/捂脸,用java的long包里的方法,很简单,只是有几次WA,有几点要注意一下 注意:如果数字有加号要删除掉,这里用到了正则表达式“\\+” ...

  7. 爬取杭电oj所有题目

    杭电oj并没有反爬 所以直接爬就好了 直接贴源码(参数可改,循环次数可改,存储路径可改) import requests from bs4 import BeautifulSoup import ti ...

  8. 杭电OJ——1198 Farm Irrigation (并查集)

    畅通工程 Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府"畅通工程"的目标是使全省任何两个城镇间都可 ...

  9. 杭电OJ——1007 Quoit Design(最近点对问题)

    Quoit Design Problem Description Have you ever played quoit in a playground? Quoit is a game in whic ...

  10. 杭电 OJ 提交代码需要注意的问题

    杭电acm 提交代码需要注意的问题 1. 用 Java 的时候类名请用 Main 2. Java 提交出现 PE 的可能原因有 1) 最基本的错误是空格问题,比如注意每行的末尾是否输出空格 2) 用 ...

随机推荐

  1. CSDN上书签迁移

    title: CSDN上书签迁移 date: 2020-11-01 16:34:30 img: /photos/2020.6.03_15/2020_06_11_cover.jpg summary: C ...

  2. 南大ics-pa/PA1.1过程及感想

    1.1 一.在红白模拟器上运行超级马里奥游戏 1.将游戏rom文件mario.nes移至~/ics2022/fceux-am/nes/rom文件下,并回到~/ics2022/fceux-am下执行ma ...

  3. Pyqtgraph入门

    一.介绍 1.1 什么是pyqtgraph? PyQtGraph是Python的图形和用户界面库,它充分利用PyQt和PtSide的高质量的图形表现水平和NumPy的快速科学计算与处理能力,在数学.科 ...

  4. Go组件库总结之介入式链表

    本篇文章我们用Go封装一个介入式的双向链表,目的是将链表的实现和具体元素解耦.文章参考自:https://github.com/brewlin/net-protocol 1.元素的接口 type El ...

  5. oracle数据库安装出现的问题

    根据相关安装教程,安装好oracle后,使用plsql连接时,不能成功连接时: 1.检查相关的环境变量等是否配置正确 2.认真看清楚 oracle客户端的相关配置 3.出现这个问题(我的是没有选择当前 ...

  6. Linux下安装MongoDB的Database Tools并配置

    安装tools以使用导入导出功能.解决mongodump: command not found #下载 wget https://fastdl.mongodb.org/tools/db/mongodb ...

  7. 批量统一调整PDF页面尺寸大小

    先合并所有PDF页面到同一个文件 使用福昕PDF编辑版打开合并后的文件,选择打印功能,选择福昕虚拟打印机,打印处理器选择"比例"模式 打印并保存文件 检查新文件各页面是否大小一致并 ...

  8. vue2 element-ui组件二封-表单组件-按钮封装

    这里是一段我们公司过往项目的代码(增删改查项目中的查询/重置按钮) <el-button @click="query()" type="primary" ...

  9. thunar文件管理器修改默认的关联的终端

    有时候在文件管理器的文件夹中打开终端操作很方便.目前好用的文件管理器基本和虚拟中终端基本上是各个桌面环境的配套产品. 比如xfce环境的thunar文件管理器如果想搭配lxde环境的lxtermina ...

  10. yarn 安装全局包

    yarn 安装全局包,无法使用,需要添加yarn的bin文件夹到环境变量 然后重启一下即可使用,再装其他全局包也可直接使用