hdu4790 Just Random (数学?)
acm.hdu.edu.cn/showproblem.php?pid=4790
题意:x随机取a~b,y随机取c~d,求(x+y)mod p = m 的概率。(结果用分数表示)
题解:
数学概率题,运用到了一般的概率姿势。
要求z=x+y的概率,可以先算符合条件的x的个数,可以由x和y的范围列出2个不等式,用min和max表示得出x的个数。
这样概率就是x的个数/ ((b-a+1)(d-c+1))。
我们要求一大堆这种z的和。
搞一搞发现是等差数列求和+一堆和+等差数列求和。
可以画到二维坐标系上更直观,x和y在一个矩形范围,x+y=z是一根斜线,求各种符合mod p =m的z斜线在范围内经过的总点数,也是两个等差求和 + 一个那啥求和。
总之好像是很水的数学题的样子,我还想了好久才写出来。
//#pragma commen(linker,"/STACK:1024000000,1024000000")
#include<cstring>
#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<string>
#include<cstdlib>
#include<string>
#include<list>
#include<sstream>
#include<set>
#include<map>
using namespace std;
#define type int
#define ll long long
#define maxm 2000500
#define re freopen("in.txt","r",stdin)
#define we freopen("out.txt","w",stdout)
#define pi acos(-1.0)
#define mod (1000000007)
#define inf 0x7fffffff
#define maxn 100006
#define pb push_back ll a,b,c,d,p,m;
ll ans0,ans1; void farm(){
ll i,j,k;
ll f1,f2,biu;
if(b+c < a+d){
f1=b+c;
f2=a+d;
biu=b-a+;
}else{
f1=a+d;
f2=b+c;
biu=d-c+;
}
i=(a+c-m)/p;
ll z=i*p+m;
if(z<a+c){
z+=p;
i++;
}
ans0=;ans1=;
if(z>b+d)return;
ans1=(b-a+) * (d-c+);
if(z<=f1){
j=(f1-m)/p;
k=j*p+m;
ans0 += (z-c-a+ + k-c-a+)*(j-i+)/;
i=j+;
z=k+p;
}
if(z<=f2){
j=(f2-m)/p;
k=j*p+m;
ans0 += biu*(j-i+);
i=j+;
z=k+p;
}
if(z<=b+d){
j=(b+d-m)/p;
k=j*p+m;
ans0 += (b-z+d+ + b-k+d+)*(j-i+)/;
i=j+;
z=k+p;
}
if(ans0==){
ans1=;
return;
}
ll gcd=__gcd(ans0,ans1);
ans0/=gcd;
ans1/=gcd;
return;
} int main() {
int T,cas=;
//re;
scanf("%d",&T);
while(T--){
scanf("%I64d%I64d%I64d%I64d%I64d%I64d",&a,&b,&c,&d,&p,&m);
farm();
printf("Case #%d: %I64d/%I64d\n",cas++,ans0,ans1);
}
return ;
}
hdu4790 Just Random (数学?)的更多相关文章
- HDU 4790 Just Random 数学
链接:pid=4790">http://acm.hdu.edu.cn/showproblem.php?pid=4790 意:从[a.b]中随机找出一个数字x,从[c.d]中随机找出一个 ...
- python之模块random,time,os,sys,序列化模块(json,pickle),collection
引入:什么是模块: 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类型. 1.使用python编写的代码(.py ...
- 三种另外的循环 while{} 和do{}while{}还有switch case
while的写法 var i=0; while(i<5){ document.write("12378<br />"); i++;} while(true)-- ...
- 八月份 CUGBACM_Summer_Tranning 题解
CUGBACM_Summer_Tranning4 比赛链接:http://vjudge.net/contest/view.action?cid=52230#overview 题解链接: F . HDU ...
- Python标准库12 数学与随机数 (math包,random包)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们已经在Python运算中看到Python最基本的数学运算功能.此外,math包 ...
- 数字(数学)操作类 Math Random 类 ,大数字操作类
Math 提供了大量的数学操作方法 Math类中所有的方法都是static 方法
- Python之数学(math)和随机数(random)
math包包含了最基本的数学运算函数,如果想要更加高级的数学功能,可以使用标准库外的numpy和scipy库,他们不但支持数组和矩阵运算, 还有丰富的数学和物理方程可供使用 random包可以用来生成 ...
- java Math数学工具及Random随机函数
Math类包含用于执行基本数学运算的方法,如绝对值.对数.平方根和三角函数.它是一个final类,其中定义的都是一些常量和静 态方法.常用方法如下:public static double sqrt( ...
- Python学习笔记:math模块(数学),random模块(随机数)
math模块 math模块用于数学意义上的一些计算,常用的方法有: math.pi:PI的值(3.141592653589793). math.floor(x):返回一个小于等于x的最大整数(浮点类型 ...
随机推荐
- Error:Flash Download Failed-"Cortex-M3"
Error:Flash Download Failed-"Cortex-M3"出现一般有两种情况: 1.SWD模式下,Debug菜单中,Reset菜单选项(Autodetect/H ...
- Mac安装Windows 10的简明教程
每次在Mac上安装Windows都是一件非常痛苦的事情,曾经为了装Win8把整台Mac的硬盘数据都弄丢了,最后通过龟速系统恢复模式恢复了MacOSX(50M电信光纤下载了3天才把系统下载完),相信和我 ...
- linux svn 服务端搭建
环境是centos6.x. 关于团队对代码管理,相信大部分人习惯于svn.不过我个人比较喜欢git的.这个blog git 常用命令 就是介绍git的基本用法.现部署svn服务端方式如下: 1. 用y ...
- CF724B. Batch Sort[枚举]
B. Batch Sort time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- 第38课 Qt中的事件处理(上)
1. GUI程序原理回顾 (1)图形界面应用程序的消息处理模型 (2)思考:操作系统发送的消息如何转变为Qt信号 2. Qt中的事件处理 (1)Qt平台将系统产生的消息转换为Qt事件 ①Qt事件是一个 ...
- Mysql 存储引擎 InnoDB与Myisam的主要区别
MySQL默认采用的是MyISAM. 1,事务处理 innodb 支持事务功能,myisam 不支持. Myisam 的执行速度更快,性能更好. MyISAM不支持事务,而InnoDB支持.InnoD ...
- [No000068]document.body.clientHeight 和 document.documentElement.clientHeight 的区别
document.body.clientWidth ==> BODY对象宽度 document.body.clientHeight ==> BODY对象高度 document.docume ...
- 初识javascript变量和基本数据类型
1.1首先,学习使用firebug控制台.设置一下firefox 中的配置选项,以便使控制台中的javascript警告更为严格...以方便我们更好的找出程序中不必要的bug. 1. 在火狐浏览器fi ...
- 判断.net中在windows系统下的字节序
字节序,是指字节在内存中的存储顺序.其又分为大端字节(Big-Endian)序和小端字节序(Little-Endian). 以下摘自百度百科: a) Little-Endian就是低位字节排放在内存的 ...
- js通过日期计算属于星期几
var arys1 = new Array(); arys1 = "2016-09-25".split('-'); //日期为输入日期,格式为 2013-3-10 var ssda ...