HDU1014 Uniform Generator

简介:
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1014

这道题就是题目有点难懂,其实难度很小,就是产生伪随机数时给出的步长step和上限mod,判断下这两个值是否可以让产生的随机数均匀分布,所谓的均匀分布就是在mod步里能产生出0到mod-1这mod个数。

#include <iostream>
using namespace std;

const long int MAX_MOD = 100000;
bool gened[MAX_MOD] = {false};//数是否产生

void doRandomTest(int step,int mod)
{
    int seed = 0,tmp,i;//初始种子值为零
    for(i=0;i<mod;++i)
    {//刚开始数都未产生
        gened[i] = false;
    }
    gened[0] = true;//第一个产生的是零
    do
    {
        tmp = (seed+step)%mod;
        gened[tmp] = true;//第tmp个数已经产生了
        seed = tmp;//更新种子数
    }while(seed!=0);
    for(i=0;i<mod;++i)
    {
        if(gened[i]==false)//有数没有产生出来
            break;
    }
    if(i==mod)
    {
        printf("%10d%10d    Good Choice\n",step,mod);
    }
    else
        printf("%10d%10d    Bad Choice\n",step,mod);
    cout<<endl;
}

int main(int argc,char* argv[])
{
    int step,mod,i;
    while(cin>>step>>mod)
    {
        doRandomTest(step,mod);
    }
    return 0;
}


本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2007/12/29/1019397.html,如需转载请自行联系原作者
目录
相关文章
|
8月前
UVa1583 - Digit Generator
UVa1583 - Digit Generator
34 0
LeetCode 367. Valid Perfect Square
给定一个正整数 num,编写一个函数,如果 num 是一个完全平方数,则返回 True,否则返回 False。
58 0
LeetCode 367. Valid Perfect Square
Leetcode-Easy 867.Transpose Matrix
Leetcode-Easy 867.Transpose Matrix
68 0
Leetcode-Easy 461.Hamming Distance
Leetcode-Easy 461.Hamming Distance
88 0
Leetcode-Easy 461.Hamming Distance
HDOJ 1014 Uniform Generator(公约数问题)
HDOJ 1014 Uniform Generator(公约数问题)
74 0
|
TensorFlow 算法框架/工具
[TensorFlow笔记乱锅炖] tf.multinomial(logits, num_samples)使用方法
tf.multinomial(logits, num_samples) 第一个参数logits可以是一个数组,每个元素的值表示对应index的选择概率。假设logits有两个元素,即[0.6,0.4],这表示的意思是取 0 的概率是0.6, 取 1 的概率是0.4。
3679 0
|
TensorFlow 算法框架/工具 索引
[转载]Tensorflow 的reduce_sum()函数的axis,keep_dim这些参数到底是什么意思?
转载链接:https://www.zhihu.com/question/51325408/answer/125426642来源:知乎 这个问题无外乎有三个难点: 什么是sum 什么是reduce 什么是维度(indices, 现在均改为了axis和numpy等包一致) sum很简单,就是求和,那么问题就是2和3,让我们慢慢来讲。
1516 0