题意:

公式sed(x) = (sed(x-1)+step)%mod,初始值sed(x)=0,输入step和mod,求解这个公式能不能生成0,1,2,3,4,5.....mod-1

解法:暴力枚举,直到出现循环

数学证明:

假设step,和mod的最大公约数是m

设step=km,mod=nm,(step<mod)

第一次,(0+km)%nm

sed(1)=km

sed(2)=(sed(1)+step)%nm=(km+km)%nm=2km%nm=2km

.........

sed(x)=(sed(x-1)+step)%nm=xkm%nm

如果xkm=nm,sed(x)=0,出现循环,出现的值都是,0,step,1step,2step,3step.....0,1step......,全是step的倍数,此时,如果step!=1,那么公式不能生成所有的数,如果step=1,那么就能生成所有的数,

此时,step和mod 的最大公约数是 1,等于step

如果xkm>nm

sed(x)=xkm%nm,因为xkm>nm,所以,xk>n,所以xk中肯定可以找出一个n,所以sed(x)=xkm%nm=(xk-n)m

sed(x+1)=(sed(x)+step)=((xk-n)m+km)%nm=(xkm-nm+km)%nm=(xkm%nm+km%nm)%nm=((x+1)km)%nm=((x+1)k-n)m

...........

都是m的整数倍.

求最大公约数,0ms

#include<iostream>
#include <stdio.h>
#include <memory.h>
using namespace std; int gcd(int a,int b)
{
return b?gcd(b,a%b):a;
}
int main()
{ int step, mod;
while (cin >> step >> mod)
{ printf("%10d%10d", step, mod);
if(gcd(step,mod)==1)
{
printf(" Good Choice\n");
}
else
{
printf(" Bad Choice\n");
}
printf("\n");
} return 0;
}

  暴力枚举,40ms

#include<iostream>
#include <stdio.h>
#include <memory.h>
using namespace std; int main()
{ int step, mod;
while (cin >> step >> mod)
{
int* used = new int[mod];
memset(used, 0, sizeof(int)*mod);
int sed = 0;
while (used[sed] != 1)
{
used[sed] = 1;
sed = (sed + step) % mod;
}
int n = 1;
for(int i = 0; i < mod; i++)
{
if(used[i] == 0)
{
n = 0;
break;
}
}
printf("%10d%10d", step, mod);
if(n)
{
printf(" Good Choice\n");
}
else
{
printf(" Bad Choice\n");
}
printf("\n");
} return 0;
}

  

UVA408-水的深度的伪随机数的更多相关文章

  1. canvas实现水波纹效果

    本文将会从水波的基本原理开始,详细讲解在canvas中模拟水波扩散,分析并计算水波的能量分布,并通过振幅模拟水波对图像的折射效果,最后实现水波特效. 水波基本原理 首先复习一波高中物理知识. 波是指振 ...

  2. 陕西中际现代:基于自适应算法的PLC滴灌控制系统

    基于自适应算法的PLC滴灌控制系统 陕西中际现代包装科技有限公司滴灌部 1.介绍 水资源正在成为一种珍贵的资源.城镇的市民使用成千上万立方的水来浇灌花园和绿地.他们依赖于使用固定灌溉计划的控制器.而这 ...

  3. iOS CAShapeLayer、CADisplayLink 实现波浪动画效果

    iOS CAShapeLayer.CADisplayLink 实现波浪动画效果 效果图 代码已上传 GitHub:https://github.com/Silence-GitHub/CoreAnima ...

  4. 初始jvm(一)---jvm内存区域与溢出

    jvm内存区域与溢出 为什么学习jvm 木板原理,最短的一块板决定一个水的深度,当一个系统垃圾收集成为瓶颈的时候,那么就需要你对jvm的了解掌握. 当一个系统出现内存溢出,内存泄露的时候,因为你懂jv ...

  5. jvm系列 (一) ---jvm内存区域与溢出

    jvm内存区域与溢出 目录 jvm系列(一):jvm内存区域与溢出 jvm系列(二):垃圾收集器与内存分配策略 为什么学习jvm 木板原理,最短的一块板决定一个水的深度,当一个系统垃圾收集成为瓶颈的时 ...

  6. 0UE3 材质概要

    材质概要 概述 参数 当创建材质时如何考虑颜色 材质表达式 Abs(求绝对值) 添加 AntialiasedTextureMask AppendVector(向量合并) BumpOffset(凸凹偏移 ...

  7. Deferred Shading,延迟渲染(提高渲染效率,减少多余光照计算)【转】

    Deferred Shading,看过<Gems2> 的应该都了解了.最近很火的星际2就是使用了Deferred Shading. 原帖位置:   http://blog.csdn.net ...

  8. tabhost实现android菜单切换

    做APP项目已经有半个月了.慢慢地熟悉了这个开发环境和开发套路. 虽然是摸着石头过河.但也渐渐看到了水的深度! 作为一个电商项目APP,势必会涉及究竟部菜单条的功能.自己实现这个功能的过程是崎岖的,最 ...

  9. Unity Water Shader

    上图是一个物体浸入水中的效果 原理 我们使用相机渲染的整个场景的深度图减去需要忽略的模型的深度,这里忽略的是图中蓝色部分,就保留了其他的深度值. 用到Main Camera渲染的深度贴图: sampl ...

随机推荐

  1. 游标 cursor

    * mongo shell下支持JS代码,可以通过JS获取游标,进而获取数据操作结果. var cursor = db.class1.find() cursor.next() 获取下一条结果 curs ...

  2. SharePoint 列表多表联合查询

    在SharePoint平台二次开发中,我们有时需要涉及多表关联查询展示多列表中的不同字段信息:SharePoint和Sql数据表一样,也支持多表联合查询,但是不像Sql语句那样简单,有一定的局限性,需 ...

  3. [Boolan-C++学习笔记]第二周整理

    1.对于String类型的类(含有指针) 其中的指针成员能够灵活的申请存储空间,但指针操作又带来内存泄漏的风险,变更指针的操作需要尤为谨慎. 要点在于写好BigThree 构造函数 { 完成成员初始化 ...

  4. 对象的继承(__proto__和Object.setPrototypeOf(child,father))

    两个对象间的继承

  5. mysql 严格模式 Strict Mode说明

    1.开启与关闭Strict Mode方法 找到mysql安装文件夹下的my.cnf(windows系统则是my.ini)文件 在sql_mode中增加STRICT_TRANS_TABLES则表示开启严 ...

  6. ace 在线编辑器 知识点

    ace 常用方法: 功能 语句 设置值 editor.setValue("the new text here"); // or session.setValue 获取值 edito ...

  7. POJ3585 Accumulation Degree(二次扫描与换根法)

    题目:http://poj.org/problem?id=3585 很容易想出暴力.那么就先扫一遍. 然后得到了指定一个根后每个点的子树值. 怎么转化利用一下呢?要是能找出当前点的父亲的 “ 不含当前 ...

  8. Qt 随机数

    相关函数    #include <QtGlobal> qsrand(unsigned seed); qrand(); 以上函数产生的随机数为伪随机数.之所以称为伪随机数,有以下两点原因: ...

  9. 小峰servlet/jsp(5)jsp自定义标签

    一.自定义标签helloworld: 二.自定义有属性的标签: HelloWorldTag.java:继承TagSupport: package com.java1234.tag; import ja ...

  10. Java设计原则之依赖倒转原则

    定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象:抽象不应该依赖细节:细节应该依赖抽象. 问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成.这种场景下,类A一 ...