题意:

公式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. Gym 101745 D.Stamp Stamp Stamp

    题目网页链接: http://codeforces.com/gym/101745/problem/D 思路:首先可以确保能够成功染色的字符串都是结果串的子串,那么O(n^2)枚举子串之后dp转移即可. ...

  2. .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件

    你可以使用临界区(Critical Section).互斥量(Mutex).信号量(Semaphores)和事件(Event)来处理线程同步.然而,在编写一些异步处理函数,尤其是还有 async 和 ...

  3. .NET 中什么样的类是可使用 await 异步等待的?

    我们已经知道 Task 是可等待的,但是去看看 Task 类的实现,几乎找不到哪个基类.接口或者方法属性能够告诉我们与 await 相关. 而本文将探索什么样的类是可使用 await 异步等待的? D ...

  4. android 自动拨打电话 挂断电话代码

    页面布局文件代码  (  res下面的layout下面的activity_main.xml代码 ) <RelativeLayout xmlns:android="http://sche ...

  5. ATOM & Sublime Text 下MarkDown插件功能比较

    ATOM & Sublime Text 下MarkDown插件功能比较 作者:net66 更新日期:2016-6-14 10:50 [一] 编辑器 Sublime Text3 vs Atom ...

  6. test20180921 量子纠缠

    题意 问题描述 万能的红太阳J 君正在研究量子信息的纠缠. 具体来说,J 君有一个初始为空的信息集.她会进行m 次操作,有时,她会向信息集内加入一个长度不超过L 的的数字串(一个数字串为一个仅由0 到 ...

  7. Properties类与配置文件

    //加载文件public static void testLoadProperties() throws Exception { Properties properties = new Propert ...

  8. ubuntu安装sublime教程

    1.安装Sublime Text 3 及常用的神器插件 ①首先添加sublime text 3的仓库:sudo add-apt-repository ppa:webupd8team/sublime-t ...

  9. 模板引擎之jade 学习

    jade 模板引擎在node express 开发中有较多的使用,首先我们看一个简单的使用jade 生成的html 页面的标签代码: doctype html html(lang="en&q ...

  10. Apache和Nginx的Rewrite规则对比

    一.Apache的rewrite 1.Rewrite规则简介: Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基于服务器级的(httpd.conf)和目录级的(.h ...