题目:hdoj 4790 Just Random

题意:给你两个闭区间【a,b】,【c,d】,分别从中等可能的跳出 x 和 y ,求(x+y)%p == m的概率

分析:

假如是【3,5】 【4,7】   p = 2 。 m = 1;

则全部的和

7 8 9 10

8 9 10 11

9 10 11 12

1 2 3 3 2 1

后面一行出现次数,能够发现能够分成三部分。第一部分递增的等差数列,第二部分值都相等,第三部分等差数列

然后用等差数列求和公式求和就ok

AC代码:

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<queue>
#include<stack>
#define MAXN 100005
using namespace std;
typedef long long LL;
LL p,m;
LL gcd(LL a,LL b)
{if(b==0)return a;return gcd(b,a%b);
}
int main()
{//freopen("Input.txt","r",stdin);int T;scanf("%d",&T);for(int cas = 1; cas<=T; cas++){LL a,b,c,d,ans = 0;scanf("%I64d%I64d%I64d%I64d%I64d%I64d",&a,&b,&c,&d,&p,&m);if((b-a)>(d-c))swap(a,c),swap(b,d);long long t1 = (a+c)%p;long long add = (m - t1 + p)%p;long long cnt1 = (a+c + add-m)/p;long long t2 = (b+c-1)%p;long long sub = (t2 - m + p)%p;long long cnt2 = (b+c-1-sub-m)/p;//cout<<t2<<" "<<sub<<endl;ans += (cnt2 - cnt1 + 1)*(1+add) + (cnt2 - cnt1 + 1)*(cnt2 - cnt1)/2 * p;t1 = (b+c)%p;add = (m - t1 + p)%p;cnt1 = (b+c+add-m)/p;t2 = (a+d)%p;sub = (t2 - m + p)%p;cnt2 = (a+d-sub-m)/p;ans += (cnt2 - cnt1 + 1)*(b-a+1);t1 = (a+d+1)%p;add = (m - t1 + p)%p;cnt1 = (a+d+1+add-m)/p;t2 = (b+d)%p;sub = (t2 - m + p)%p;cnt2 = (b+d-sub-m)/p;ans += (cnt2 - cnt1 + 1)*(1+sub) + (cnt2 - cnt1 + 1)*(cnt2 - cnt1)/2*p;long long tot = (b-a+1)*(d-c+1);long long GCD = gcd(ans,tot);ans /= GCD;tot /= GCD;printf("Case #%d: %I64d/%I64d\n",cas,ans,tot);}return 0;
}

转载于:https://www.cnblogs.com/gavanwanggw/p/6823814.html

hdoj 4790 Just Random 【数学】相关推荐

  1. 【HDOJ】4579 Random Walk

    1. 题目描述 一个人沿着一条长度为n个链行走,给出了每秒钟由i到j的概率($i,j \in [1,n]$).求从1开始走到n个时间的期望. 2. 基本思路 显然是个DP.公式推导也相当容易.不妨设$ ...

  2. 2013_chengdu_onsite

    4781 Assignment For Princess 构造题目,可以先构造前n条边,然后对于剩下的m-n条边,一直构造搜索w%3==0. 4782 Beautiful Soup 直接模拟即可,不过 ...

  3. 如何爬取新三板数据库(一)

    如何爬取新三板数据(一) 新三板数据是实证分析中较常用到的一个数据库,其包含了一万多家挂牌中小企业,涵盖了制造业,交通运输,现代信息服务,文化服务,商业服务等除第一产业外的几乎全部国民行业.新三板挂牌 ...

  4. 《Python程序设计与算法基础教程(第二版)》江红 余青松 课后选择题 课后填空题答案

    目录 第一章 一.选择题 二.填空题 第二章 一.选择题 二.填空题 第三章 一.选择题 二.填空题 第四章 一.选择题 二.填空题 第五章 一.选择题 二.填空题 第八章 一.选择题 二.填空题 第 ...

  5. python笔记_第三周

    python笔记_第三周 第十天 回调函数 回调函数就是一个被作为参数传递的函数把函数a当做一个值 赋值给函数b的形参, 在调用函数b的时候 在函数体内 适当的实际调用函数a, 这个函数a就是回调函数 ...

  6. 计算机二级Python 操作题知识点及例题总结

    计算机二级Python 操作题知识点及例题总结 format输出 Unicode 精度控制 循环段 计数器 jieba len() turtle 箭头在结尾 箭头在开头 字符串基本统计 利用get() ...

  7. javascipt 学习笔记

    javascipt 介绍 是一门编程语言,由布兰登艾奇创作 javascript 组成部分 ECMAScript 标准语法.DOM.BOM ECMAScript 变量 官方的定义:在计算机内存中开辟一 ...

  8. Python学习笔记17:标准库之数学相关(math包,random包)

    前面几节看得真心累.如今先来点简单easy理解的内容. 一 math包 math包主要处理数学相关的运算. 常数 math.e   # 自然常数e math.pi  # 圆周率pi 运算函数 math ...

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

    如果想要更加高级的数学功能,可以考虑选择标准库之外的numpy和scipy项目,它们不但支持数组和矩阵运算,还有丰富的数学和物理方程可供使用. 此外,random包可以用来生成随机数.随机数不仅可以用 ...

最新文章

  1. 用node.js启动mock.js
  2. 产品经理日常表情包大全,多说是泪拿走不谢!
  3. 创意总监分享:我是如何做一款手游地图的
  4. php内核分析(六)-opcode
  5. jzoj3319-[BOI2013]雪地踪迹【bfs】
  6. 解决ubuntu未安装无线网卡驱动的问题
  7. 矩阵在Matlab中应用规则,1.3 MATLAB中的矩阵运算免费阅读_详解MATLAB在最优化计算中的应用免费全文_百度阅读...
  8. 软件工程师必读技术书籍推荐
  9. unity下载与安装
  10. Web3:开源文化下的技术创新
  11. 高等数学学习笔记——第九十讲——斯托克斯公式
  12. 日更第1天:Linux常用命令之dnf用法
  13. js实现文本相似度对比
  14. C++从键盘输入的方法
  15. 世界的物质性及其发展规律
  16. 最好用的六款虚拟机软件
  17. php固定红包 + 随机红包算法
  18. 直播预告 | ICLR专场一
  19. Python绘制TSP、VRP问题求解结果图
  20. loctionplace.reset_index(drop=True,inplace=True)

热门文章

  1. 【opencv入门篇】 10个程序快速上手opencv【上】
  2. 两百个jQuery插件集合
  3. 在计算机结构的简化模型中,2.4 计算机结构的简化模型
  4. 有没有安卓4.0的java模拟器_电脑端安装Android4.0模拟器使用教程
  5. centos 如何测udp端口是否开放_如何测试端口通不通(四种方法)
  6. python string转int_Python编程入门:time模块常用技巧
  7. 计算机考试只读,计算机基础考试试题-20210710011550.docx-原创力文档
  8. php 环境优化,[笔记] 使用 opcache 优化生产环境 PHP
  9. android 分享qq微信朋友圈,H5微信JS-SDK实现分享朋友 朋友圈以及QQ自定义分享
  10. c语言s_gets函数作用,C语言中gets_s(),gets(),fgets()函数的比较。