hdu 4790 数学
/*
题意:给你二个区间[a,b]和[c,d]
分别从中选一个数x和y使的(x+y)%p=m;
可以这样来求,先求出(0->b和0->d区间段的值)-(区间0->a-1和0->d的值)-(区间0->b和0->c-1的值)+(0->a-1和0->c-1)的值
而且发现有这样的规律对于连个区间的末端值a和b来说
当在0->a这个区间内有一个单调性,a->b-1这个区间内有单调性,b-(a+b-m)/p*p这个区间内有单调性
直接用等差数列计算即可
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define ll __int64
ll p,m;
ll f(ll aa,ll bb)
{
if(aa<0||bb<0)return 0;
ll i;
if(aa>bb)
{
i=aa;
aa=bb;
bb=i;
}
i=0;
ll j=0;
ll sum=0;
i=(aa-m)/p;
if(i>=0&&aa>=m)
{
sum+=(m+1+i*p+m+1)*(i+1)/2;
i++;
}
else i=0;
// printf("i=%I64d\n",sum);
j=(bb-m)/p;
if((bb-m)%p==0)j--;
if(j>=i&&bb>=m)
{
sum+=(aa+1)*(j-i+1);
j++;
}
else
j=i;
// printf("j=%I64d\n",sum);
ll k=(aa+bb-m)/p;
if(k>=j&&aa+bb>=m)
{
// printf("%I64d %I64d\n",aa,bb);
sum+=(aa+bb+1)*(k-j+1);
// printf("k=%I64d\n",sum);
sum-=(j*p+m+k*p+m)*(k-j+1)/2;
}
// printf("%I64d\n",sum);
return sum;
}
ll gcd(ll a,ll b)
{
if(b==0)return a;
return gcd(b,a%b);
}
int main()
{
ll t,a,b,c,d,aa,bb,k=0;
scanf("%I64d",&t);
while(t--)
{
scanf("%I64d%I64d%I64d%I64d%I64d%I64d",&a,&b,&c,&d,&p,&m);
aa=f(b,d)-f(a-1,d)-f(b,c-1)+f(a-1,c-1);
if(aa==0)
{
printf("Case #%I64d: 0/1\n",++k);
continue;
}
bb=gcd(aa,(b-a+1)*(d-c+1));
printf("Case #%I64d: %I64d/%I64d\n",++k,aa/bb,(b-a+1)*(d-c+1)/bb);
}
return 0;
}
hdu 4790 数学的更多相关文章
- HDU 5984 数学期望
对长为L的棒子随机取一点分割两部分,抛弃左边一部分,重复过程,直到长度小于d,问操作次数的期望. 区域赛的题,比较基础的概率论,我记得教材上有道很像的题,对1/len积分,$ln(L)-ln(d)+1 ...
- HDU 4790 Just Random 数学
链接:pid=4790">http://acm.hdu.edu.cn/showproblem.php?pid=4790 意:从[a.b]中随机找出一个数字x,从[c.d]中随机找出一个 ...
- hdu 4790 Just Random (2013成都J题) 数学思路题 容斥
题意:在[a,b] [c,d] 之间,和模p等于m的对数 详见代码 #include <stdio.h> #include <algorithm> #include < ...
- hdu 4790 Just Random (思路+分类计算+数学)
Problem Description Coach Pang and Uncle Yang both love numbers. Every morning they play a game with ...
- HDU 5976 数学,逆元
1.HDU 5976 Detachment 2.题意:给一个正整数x,把x拆分成多个正整数的和,这些数不能有重复,要使这些数的积尽可能的大,输出积. 3.总结:首先我们要把数拆得尽可能小,这样积才会更 ...
- *HDU 2451 数学
Simple Addition Expression Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- [ An Ac a Day ^_^ ] hdu 4565 数学推导+矩阵快速幂
从今天开始就有各站网络赛了 今天是ccpc全国赛的网络赛 希望一切顺利 可以去一次吉大 希望还能去一次大连 题意: 很明确是让你求Sn=[a+sqrt(b)^n]%m 思路: 一开始以为是水题 暴力了 ...
- hdu 4506(数学,循环节+快速幂)
小明系列故事——师兄帮帮忙 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
- hdu 4432 数学杂题
http://acm.hdu.edu.cn/showproblem.php?pid=4432 6分钟写的代码,一上午去调试,, 哎,一则题目没看懂就去写了,二则,哎,,恶心了.在坚持几天然后ACM退役 ...
随机推荐
- Suricata里的规则与Snort区别之处
不多说,直接上干货! 见官网 https://suricata.readthedocs.io/en/latest/rules/differences-from-snort.html
- AJPFX浅谈Java新手问题之缺少良好的编程习惯
★随意地命名 有些新手写程序,当需要定义某个变量名(也可能是函数名.类名.包名等)时,随意地一敲键盘,名字就起好了......若干星期后,碰到某 bug,再来看自己写的代码时,心中暗自嘀咕:“这代码是 ...
- Spring Cloud Config 使用Bus的动态配置中心
server端配置 POM文件 <dependency> <groupId>org.springframework.boot</groupId> <artif ...
- UART协议
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,通常称作UART,读音/ˈjuːart/)是一种异步收发传输器,是电脑硬件的一部分,将资料由 ...
- python中的seteuid
seteuid(...) seteuid(uid) Set the current process's effective user id.
- COGS 74. [NOIP2006] 明明的随机数 (Splay小练习。。)
☆ 输入文件:random.in 输出文件:random.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] 明明想在学校中请一些同学一起做一项问卷调查,为了 ...
- uva10163 Storage Keepers
习题9-9 注意前提是最小值最大.很少做两次dp的题. 初始化要细心. #include<iostream> #include<cmath> #include<algor ...
- Python基础1 介绍、基本语法 、 流程控制-DAY1
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...
- xlsx 读取文件日期问题
xlsx 的版本:0.13.5,可以取到日期 xlsx 的版本:0.14.3,取到的日期转为数字了,没有找到方法转为日期, 可以开启 cellDates: true,但是这个时区不对, dateN ...
- django insert data into mysql
#!/usr/bin/python # -*- coding:utf-8 -*- # @filename: search # @author:wwx399777 wuweiji # @date: 20 ...