hdoj 4790 Just Random 【数学】
2024-08-30 17:53:58
题意:给你两个闭区间【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;
}
最新文章
- 微信JS-SDK坐标位置转换为百度地图坐标
- wangEditor——轻量级web富文本框
- 迄今最深入、最专业的Hololens评测结果,美国AR大咖艾迪&#183;奥夫曼现身说法
- A simple Snippet in ST2
- UrlRewriteFilter
- [Flex] Accordion系列 - Header图标的设置
- break 和 continue
- 在VS2012中采用C++中调用DLL中的函数 (4)
- BI的核心价值[转]
- Project Euler 82:Path sum: three ways 路径和:3个方向
- Core dotnet 命令大全
- 单片机C语言实现的采用DS18B20的温度检测装置
- runat=";server";
- 填个小坑,Vue不支持IE8及以下,跨域ajax不支持IE9
- 阿里巴巴Java开发手册思维导图
- 《高效能程序员的修炼》读后感 By Yong Zhang
- 把一个机器上1天内新增的文件用rsync传送到另外一台机器
- 结合JDK源码看设计模式——模板方法模式
- ArrayDataProvider数据分页
- 关于win10企业版在极域电子教室软件 v4.0 2015 豪华版的全屏控制下如何取得自由