UVA408-水的深度的伪随机数
题意:
公式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-水的深度的伪随机数的更多相关文章
- canvas实现水波纹效果
本文将会从水波的基本原理开始,详细讲解在canvas中模拟水波扩散,分析并计算水波的能量分布,并通过振幅模拟水波对图像的折射效果,最后实现水波特效. 水波基本原理 首先复习一波高中物理知识. 波是指振 ...
- 陕西中际现代:基于自适应算法的PLC滴灌控制系统
基于自适应算法的PLC滴灌控制系统 陕西中际现代包装科技有限公司滴灌部 1.介绍 水资源正在成为一种珍贵的资源.城镇的市民使用成千上万立方的水来浇灌花园和绿地.他们依赖于使用固定灌溉计划的控制器.而这 ...
- iOS CAShapeLayer、CADisplayLink 实现波浪动画效果
iOS CAShapeLayer.CADisplayLink 实现波浪动画效果 效果图 代码已上传 GitHub:https://github.com/Silence-GitHub/CoreAnima ...
- 初始jvm(一)---jvm内存区域与溢出
jvm内存区域与溢出 为什么学习jvm 木板原理,最短的一块板决定一个水的深度,当一个系统垃圾收集成为瓶颈的时候,那么就需要你对jvm的了解掌握. 当一个系统出现内存溢出,内存泄露的时候,因为你懂jv ...
- jvm系列 (一) ---jvm内存区域与溢出
jvm内存区域与溢出 目录 jvm系列(一):jvm内存区域与溢出 jvm系列(二):垃圾收集器与内存分配策略 为什么学习jvm 木板原理,最短的一块板决定一个水的深度,当一个系统垃圾收集成为瓶颈的时 ...
- 0UE3 材质概要
材质概要 概述 参数 当创建材质时如何考虑颜色 材质表达式 Abs(求绝对值) 添加 AntialiasedTextureMask AppendVector(向量合并) BumpOffset(凸凹偏移 ...
- Deferred Shading,延迟渲染(提高渲染效率,减少多余光照计算)【转】
Deferred Shading,看过<Gems2> 的应该都了解了.最近很火的星际2就是使用了Deferred Shading. 原帖位置: http://blog.csdn.net ...
- tabhost实现android菜单切换
做APP项目已经有半个月了.慢慢地熟悉了这个开发环境和开发套路. 虽然是摸着石头过河.但也渐渐看到了水的深度! 作为一个电商项目APP,势必会涉及究竟部菜单条的功能.自己实现这个功能的过程是崎岖的,最 ...
- Unity Water Shader
上图是一个物体浸入水中的效果 原理 我们使用相机渲染的整个场景的深度图减去需要忽略的模型的深度,这里忽略的是图中蓝色部分,就保留了其他的深度值. 用到Main Camera渲染的深度贴图: sampl ...
随机推荐
- Gym 101745 D.Stamp Stamp Stamp
题目网页链接: http://codeforces.com/gym/101745/problem/D 思路:首先可以确保能够成功染色的字符串都是结果串的子串,那么O(n^2)枚举子串之后dp转移即可. ...
- .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
你可以使用临界区(Critical Section).互斥量(Mutex).信号量(Semaphores)和事件(Event)来处理线程同步.然而,在编写一些异步处理函数,尤其是还有 async 和 ...
- .NET 中什么样的类是可使用 await 异步等待的?
我们已经知道 Task 是可等待的,但是去看看 Task 类的实现,几乎找不到哪个基类.接口或者方法属性能够告诉我们与 await 相关. 而本文将探索什么样的类是可使用 await 异步等待的? D ...
- android 自动拨打电话 挂断电话代码
页面布局文件代码 ( res下面的layout下面的activity_main.xml代码 ) <RelativeLayout xmlns:android="http://sche ...
- ATOM & Sublime Text 下MarkDown插件功能比较
ATOM & Sublime Text 下MarkDown插件功能比较 作者:net66 更新日期:2016-6-14 10:50 [一] 编辑器 Sublime Text3 vs Atom ...
- test20180921 量子纠缠
题意 问题描述 万能的红太阳J 君正在研究量子信息的纠缠. 具体来说,J 君有一个初始为空的信息集.她会进行m 次操作,有时,她会向信息集内加入一个长度不超过L 的的数字串(一个数字串为一个仅由0 到 ...
- Properties类与配置文件
//加载文件public static void testLoadProperties() throws Exception { Properties properties = new Propert ...
- ubuntu安装sublime教程
1.安装Sublime Text 3 及常用的神器插件 ①首先添加sublime text 3的仓库:sudo add-apt-repository ppa:webupd8team/sublime-t ...
- 模板引擎之jade 学习
jade 模板引擎在node express 开发中有较多的使用,首先我们看一个简单的使用jade 生成的html 页面的标签代码: doctype html html(lang="en&q ...
- Apache和Nginx的Rewrite规则对比
一.Apache的rewrite 1.Rewrite规则简介: Rewirte主要的功能就是实现URL的跳转,它的正则表达式是基于Perl语言.可基于服务器级的(httpd.conf)和目录级的(.h ...