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斜线在范围内经过的总点数,也是两个等差求和 + 一个那啥求和。

总之好像是很水的数学题的样子,我还想了好久才写出来。

  1. //#pragma commen(linker,"/STACK:1024000000,1024000000")
  2. #include<cstring>
  3. #include<iostream>
  4. #include<cstdio>
  5. #include<vector>
  6. #include<algorithm>
  7. #include<cmath>
  8. #include<queue>
  9. #include<stack>
  10. #include<string>
  11. #include<cstdlib>
  12. #include<string>
  13. #include<list>
  14. #include<sstream>
  15. #include<set>
  16. #include<map>
  17. using namespace std;
  18. #define type int
  19. #define ll long long
  20. #define maxm 2000500
  21. #define re freopen("in.txt","r",stdin)
  22. #define we freopen("out.txt","w",stdout)
  23. #define pi acos(-1.0)
  24. #define mod (1000000007)
  25. #define inf 0x7fffffff
  26. #define maxn 100006
  27. #define pb push_back
  28.  
  29. ll a,b,c,d,p,m;
  30. ll ans0,ans1;
  31.  
  32. void farm(){
  33. ll i,j,k;
  34. ll f1,f2,biu;
  35. if(b+c < a+d){
  36. f1=b+c;
  37. f2=a+d;
  38. biu=b-a+;
  39. }else{
  40. f1=a+d;
  41. f2=b+c;
  42. biu=d-c+;
  43. }
  44. i=(a+c-m)/p;
  45. ll z=i*p+m;
  46. if(z<a+c){
  47. z+=p;
  48. i++;
  49. }
  50. ans0=;ans1=;
  51. if(z>b+d)return;
  52. ans1=(b-a+) * (d-c+);
  53. if(z<=f1){
  54. j=(f1-m)/p;
  55. k=j*p+m;
  56. ans0 += (z-c-a+ + k-c-a+)*(j-i+)/;
  57. i=j+;
  58. z=k+p;
  59. }
  60. if(z<=f2){
  61. j=(f2-m)/p;
  62. k=j*p+m;
  63. ans0 += biu*(j-i+);
  64. i=j+;
  65. z=k+p;
  66. }
  67. if(z<=b+d){
  68. j=(b+d-m)/p;
  69. k=j*p+m;
  70. ans0 += (b-z+d+ + b-k+d+)*(j-i+)/;
  71. i=j+;
  72. z=k+p;
  73. }
  74. if(ans0==){
  75. ans1=;
  76. return;
  77. }
  78. ll gcd=__gcd(ans0,ans1);
  79. ans0/=gcd;
  80. ans1/=gcd;
  81. return;
  82. }
  83.  
  84. int main() {
  85. int T,cas=;
  86. //re;
  87. scanf("%d",&T);
  88. while(T--){
  89. scanf("%I64d%I64d%I64d%I64d%I64d%I64d",&a,&b,&c,&d,&p,&m);
  90. farm();
  91. printf("Case #%d: %I64d/%I64d\n",cas++,ans0,ans1);
  92. }
  93. return ;
  94. }

hdu4790 Just Random (数学?)的更多相关文章

  1. HDU 4790 Just Random 数学

    链接:pid=4790">http://acm.hdu.edu.cn/showproblem.php?pid=4790 意:从[a.b]中随机找出一个数字x,从[c.d]中随机找出一个 ...

  2. python之模块random,time,os,sys,序列化模块(json,pickle),collection

    引入:什么是模块:   一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类型. 1.使用python编写的代码(.py ...

  3. 三种另外的循环 while{} 和do{}while{}还有switch case

    while的写法 var i=0; while(i<5){ document.write("12378<br />");  i++;} while(true)-- ...

  4. 八月份 CUGBACM_Summer_Tranning 题解

    CUGBACM_Summer_Tranning4 比赛链接:http://vjudge.net/contest/view.action?cid=52230#overview 题解链接: F . HDU ...

  5. Python标准库12 数学与随机数 (math包,random包)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们已经在Python运算中看到Python最基本的数学运算功能.此外,math包 ...

  6. 数字(数学)操作类 Math Random 类 ,大数字操作类

    Math 提供了大量的数学操作方法 Math类中所有的方法都是static 方法

  7. Python之数学(math)和随机数(random)

    math包包含了最基本的数学运算函数,如果想要更加高级的数学功能,可以使用标准库外的numpy和scipy库,他们不但支持数组和矩阵运算, 还有丰富的数学和物理方程可供使用 random包可以用来生成 ...

  8. java Math数学工具及Random随机函数

    Math类包含用于执行基本数学运算的方法,如绝对值.对数.平方根和三角函数.它是一个final类,其中定义的都是一些常量和静 态方法.常用方法如下:public static double sqrt( ...

  9. Python学习笔记:math模块(数学),random模块(随机数)

    math模块 math模块用于数学意义上的一些计算,常用的方法有: math.pi:PI的值(3.141592653589793). math.floor(x):返回一个小于等于x的最大整数(浮点类型 ...

随机推荐

  1. JSP连接MySQL数据库问题

    之前写了一大段,还说了一下具体JDBC连接数据库API的具体包的基本知识,哪知道自己手残不小心按了删除按钮.结果去看自动保存记录时,就只剩下下面这段了.好吧,其实最主要最核心的也就是下面这点了.具体如 ...

  2. WPF系列 Style

        参考 WPF: Customize your Application with Styles and Control Templates (Part 2 of 2)

  3. [WPF系列]Button 自定义

    A Simple Cross Button for WPF   CREATING MORE COMPLEX BUTTONS IN XAML   WPF Custom Controls - Withou ...

  4. 基于.net开发chrome核心浏览器【七】

    这是一个系列的文章,前面六篇文章的地址如下: 基于.net开发chrome核心浏览器[六] 基于.net开发chrome核心浏览器[五] 基于.net开发chrome核心浏览器[四] 基于.net开发 ...

  5. Zabbix监控Tengine

    title: Zabbix监控Tengine tags: zabbix,nginx,tengine author: Chinge Yang date: 2016-12-29 --- Zabbix监控T ...

  6. BZOJ 1070: [SCOI2007]修车 [最小费用最大流]

    1070: [SCOI2007]修车 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 4936  Solved: 2032[Submit][Status] ...

  7. BZOJ1856[SCOI2010]字符串

    Description lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不能少于0的个数.现在lxhgw ...

  8. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 更优美的Oracle数据库上的代码生成器

    代码生成器进行了改进,针对Oracle数据库生成更优美的代码.这样生成出来的代码,更像微软的风格,更像C#.NET的标准规范,阅读起来也更优美.把Oracle表字段名默认大写, 有_分割等进行了优化, ...

  9. PhpStorm XDebug 远程调试

    现在我们自己公司的各种开发和测试服务器,都是使用阿里云的服务器.一些PHP的项目,无法在本地搭建完整的环境,在外网服务器上调试更方便定位问题.发现网上没有完整的关于如何配置PHPStorm和XDebu ...

  10. asp.net mvc后台操作之读写xml控制首页动态页面开关显示

    一.背景 在asp.net mvc项目里,用户需要开拓几个活动版面,并以侧栏的方式呈现在首页右侧,几个活动时间不一致,为避免浏览者在活动未开放之时进入未开放的服务页面.因此不仅需要在活动代码中加入限制 ...