1014 Uniform Generator ACM
http://acm.hdu.edu.cn/showproblem.php?pid=1014
题目的英文实在是太多了 ,搞不懂。
最后才知道是用公式seed(x+1) = [seed(x) + STEP] % MOD 来计算随机数 ,问是否满足随机数。
初级版本:
思路:把所有的用该公式计算出来的数(存在数组中)都遍历出来,然后排序。由于数字是在0 到mod-1 之间,所以数组的下标必然等于数组的值,有一个不等于,就是bad chioce
#include <stdio.h>
#include <stdlib.h>
int cmp ( const void *p1 , const void *p2 )
{
return *( int * )p1 - *( int * )p2 ;
}
int main ( )
{
int step , mod ;
while ( (scanf("%d %d",&step , &mod ) ) != EOF )
{
int i , seed[ ] = { } ;
seed[ ] = ;
for ( i = ; i < mod ; i ++ )
seed[ i ] = ( seed[ i- ] + step ) % mod ; qsort( seed , mod , sizeof ( int ) , cmp ) ;
for ( i = ; i < mod ; i ++ )
if ( seed[ i ] != i )
break ;
if ( i != mod )
printf("%10d%10d Bad Choice\n\n", step , mod );
if ( i == mod )
printf("%10d%10d Good Choice\n\n" , step , mod );
}
return ;
}
升级版本:
思路:只要有一个遍历出来的数和已经算出来的随机数相等 ,根据该公式,那么后来遍历出来的数,必然循环相等。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
int visit[];
int main()
{
int sept,mod;
while(scanf("%d%d",&sept,&mod) != EOF)
{
int flag = ,n = ;
memset(visit,,sizeof(visit));
for(int i = ; i <= mod; i++)
{
n = (n + sept) % mod;
if(visit[n])
{
flag = ;
break;
}
else
{
visit[n] = ;
}
}
if(flag)
printf("%10d%10d Bad Choice\n\n",sept,mod);
else
printf("%10d%10d Good Choice\n\n",sept,mod);
}
return ; }
1014 Uniform Generator ACM的更多相关文章
- HDU 1014 Uniform Generator(模拟和公式)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1014 Uniform Generator Time Limit: 2000/1000 MS (Java ...
- HDU 1014 Uniform Generator【GCD,水】
Uniform Generator Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- HDU 1014:Uniform Generator
Uniform Generator Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- HDU 1014 Uniform Generator(题解)
Uniform Generator Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- hdu 1014.Uniform Generator 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1014 题目意思:给出 STEP 和 MOD,然后根据这个公式:seed(x+1) = [seed(x) ...
- HDU 1014 Uniform Generator 欧几里得
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1014 解题思路: 1. 把题目意思读懂后,明白会输入两个数,然后根据题中的公式产生一系列伪随机数,看这 ...
- HDOJ 1014 Uniform Generator(公约数问题)
Problem Description Computer simulations often require random numbers. One way to generate pseudo-ra ...
- 1014 Uniform Generator
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
- HDU 1014 Uniform Generator 题解
找到规律之后本题就是水题了.只是找规律也不太easy的.证明这个规律成立更加不easy. 本题就是求step和mod假设GCD(最大公约数位1)那么就是Good Choice,否则为Bad Choic ...
随机推荐
- CF939F
好神奇的dp... 首先有一个很简单的思想:设dp[i][j]表示目前到了第i分钟,朝上的面被烤了j分钟的情况下所需的最小交换次数 那么有转移:dp[i][j]=min(dp[i-1][j],dp[i ...
- log4j2的配置文件log4j2.xml笔记
一.背景 最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2.x 的版本,那随之而来的slf4j整合log4j的配置(使用Slf4j集成Log4j2构建项目日志系统的完美解决方 ...
- MySQL 复制表到另一个表
1.复制表结构及数据到新表 create table 新表 select * from 旧表 2.只复制表结构到新表 方法1:(低版本的mysql不支持,mysql4.0.25 不支持,mysql5已 ...
- cmake方式使用vlfeat
目录 environment statement compile vlfeat with cmake compile example project with cmake 1. make sure c ...
- MyBatis-Plus工具快速入门
MyBatis-Plus官方文档:http://mp.baomidou.com/#/quick-starthttp://mp.baomidou.com/guide/#%E7%89%B9%E6%80%A ...
- Visual Studio 2017 IDE之xml过大报错
XML处理时遇到这个错误 在powershell中输入 $vsWherePath = Join-Path ${env:ProgramFiles(x86)} "Microsoft Visual ...
- [转] JavaScript 单例模式
定义 确保一个类仅有一个实例,并提供一个访问它的全局访问点. 单例模式使用的场景 比如线程池.全局缓存等.我们所熟知的浏览器的window对象就是一个单例,在JavaScript开发中,对于这种只需要 ...
- 【CF666E】Forensic Examination
题解: 熟练掌握了后缀自动机后大部分题目应该都比较容易想 首先对t建立广义后缀自动机 然后我们可以用线段树合并处理出每个点每个串出现的次数,然后求出最大值 匹配的时候比较巧妙 我们离线处理 对于同一个 ...
- bzoj4520【CQOI2016】K远点对
题解: kd-tree裸题 对每个点维护最近的k个开个堆维护一下
- Ubuntu14.04创建无线WiFi,android可以连接上网
前提条件: ubuntu14.04 unity,已经通过有线连接到internet 一般环境下创建的wifi热点android设备是无法识别的,网上说通过ap-hotspot方式创建出来的热点手机可以 ...