hdoj 4790 Just Random 【数学】
题目: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 【数学】相关推荐
- 【HDOJ】4579 Random Walk
1. 题目描述 一个人沿着一条长度为n个链行走,给出了每秒钟由i到j的概率($i,j \in [1,n]$).求从1开始走到n个时间的期望. 2. 基本思路 显然是个DP.公式推导也相当容易.不妨设$ ...
- 2013_chengdu_onsite
4781 Assignment For Princess 构造题目,可以先构造前n条边,然后对于剩下的m-n条边,一直构造搜索w%3==0. 4782 Beautiful Soup 直接模拟即可,不过 ...
- 如何爬取新三板数据库(一)
如何爬取新三板数据(一) 新三板数据是实证分析中较常用到的一个数据库,其包含了一万多家挂牌中小企业,涵盖了制造业,交通运输,现代信息服务,文化服务,商业服务等除第一产业外的几乎全部国民行业.新三板挂牌 ...
- 《Python程序设计与算法基础教程(第二版)》江红 余青松 课后选择题 课后填空题答案
目录 第一章 一.选择题 二.填空题 第二章 一.选择题 二.填空题 第三章 一.选择题 二.填空题 第四章 一.选择题 二.填空题 第五章 一.选择题 二.填空题 第八章 一.选择题 二.填空题 第 ...
- python笔记_第三周
python笔记_第三周 第十天 回调函数 回调函数就是一个被作为参数传递的函数把函数a当做一个值 赋值给函数b的形参, 在调用函数b的时候 在函数体内 适当的实际调用函数a, 这个函数a就是回调函数 ...
- 计算机二级Python 操作题知识点及例题总结
计算机二级Python 操作题知识点及例题总结 format输出 Unicode 精度控制 循环段 计数器 jieba len() turtle 箭头在结尾 箭头在开头 字符串基本统计 利用get() ...
- javascipt 学习笔记
javascipt 介绍 是一门编程语言,由布兰登艾奇创作 javascript 组成部分 ECMAScript 标准语法.DOM.BOM ECMAScript 变量 官方的定义:在计算机内存中开辟一 ...
- Python学习笔记17:标准库之数学相关(math包,random包)
前面几节看得真心累.如今先来点简单easy理解的内容. 一 math包 math包主要处理数学相关的运算. 常数 math.e # 自然常数e math.pi # 圆周率pi 运算函数 math ...
- Python标准库 数学与随机数 (math包,random包)
如果想要更加高级的数学功能,可以考虑选择标准库之外的numpy和scipy项目,它们不但支持数组和矩阵运算,还有丰富的数学和物理方程可供使用. 此外,random包可以用来生成随机数.随机数不仅可以用 ...
最新文章
- 用node.js启动mock.js
- 产品经理日常表情包大全,多说是泪拿走不谢!
- 创意总监分享:我是如何做一款手游地图的
- php内核分析(六)-opcode
- jzoj3319-[BOI2013]雪地踪迹【bfs】
- 解决ubuntu未安装无线网卡驱动的问题
- 矩阵在Matlab中应用规则,1.3 MATLAB中的矩阵运算免费阅读_详解MATLAB在最优化计算中的应用免费全文_百度阅读...
- 软件工程师必读技术书籍推荐
- unity下载与安装
- Web3:开源文化下的技术创新
- 高等数学学习笔记——第九十讲——斯托克斯公式
- 日更第1天:Linux常用命令之dnf用法
- js实现文本相似度对比
- C++从键盘输入的方法
- 世界的物质性及其发展规律
- 最好用的六款虚拟机软件
- php固定红包 + 随机红包算法
- 直播预告 | ICLR专场一
- Python绘制TSP、VRP问题求解结果图
- loctionplace.reset_index(drop=True,inplace=True)
热门文章
- 【opencv入门篇】 10个程序快速上手opencv【上】
- 两百个jQuery插件集合
- 在计算机结构的简化模型中,2.4 计算机结构的简化模型
- 有没有安卓4.0的java模拟器_电脑端安装Android4.0模拟器使用教程
- centos 如何测udp端口是否开放_如何测试端口通不通(四种方法)
- python string转int_Python编程入门:time模块常用技巧
- 计算机考试只读,计算机基础考试试题-20210710011550.docx-原创力文档
- php 环境优化,[笔记] 使用 opcache 优化生产环境 PHP
- android 分享qq微信朋友圈,H5微信JS-SDK实现分享朋友 朋友圈以及QQ自定义分享
- c语言s_gets函数作用,C语言中gets_s(),gets(),fgets()函数的比较。