博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 4790 Just Random (2013成都J题) 数学思路题 容斥
阅读量:5094 次
发布时间:2019-06-13

本文共 1329 字,大约阅读时间需要 4 分钟。

题意:在[a,b]  [c,d] 之间,和模p等于m的对数

详见代码

 

1 #include 
2 #include
3 #include
4 #include
5 #define LL long long 6 using namespace std; 7 int T; 8 LL a,b,c,d,p,m; 9 10 LL gcd(LL a, LL b) {11 return b ? gcd(b, a % b) : a;12 }13 14 LL fun(LL x,LL y) {
//表示0到x区间,0到y区间的组合对数15 LL ret;16 LL ra,rb;17 ra=x%p,rb=y%p;18 ret=(x/p)*(y/p)*p;19 ret+=(ra+1)*(y/p)+(rb+1)*(x/p);20 if(ra>m) {21 ret+=min(m+1,rb+1);22 LL tmp=(m+p-ra)%p;23 if(tmp<=rb) {24 ret+=rb-tmp+1;25 }26 } else {27 LL tmp=(m+p-ra)%p;28 if(tmp<=rb) {29 ret+=min(m-tmp+1,rb-tmp+1);30 }31 }32 return ret;33 }34 int main() {35 scanf("%d",&T);36 int cas=0;37 while(T--) {38 cas++;39 scanf("%I64d%I64d%I64d%I64d%I64d%I64d",&a,&b,&c,&d,&p,&m);40 LL ans=fun(b,d)-fun(a-1,d)-fun(b,c-1)+fun(a-1,c-1);//容斥原理求和41 LL tot=(b-a+1)*(d-c+1);42 if(ans<0)43 ans=0;44 // printf("ans:%I64d tot:%I64d\n",ans,tot);45 LL l=gcd(ans,tot);46 ans/=l,tot/=l;47 printf("Case #%d: %I64d/%I64d\n", cas, ans, tot);48 }49 return 0;50 }
View Code

 

转载于:https://www.cnblogs.com/ITUPC/p/5298901.html

你可能感兴趣的文章
7-1 树的同构 (25 分)
查看>>
史上前端面试最全知识点
查看>>
构造器
查看>>
Java中toArray的用法探究(java数组与list转换)
查看>>
ABP Zero示例项目问题总结
查看>>
Chromium Embedded Framework中文文档 (升级到最新的Chrome)
查看>>
运营三位一体:人+内容+活动
查看>>
.Net Core项目发布到虚拟机(三)
查看>>
转:微博"收藏/赞/转发"技术资料汇总
查看>>
leetcode 一些算法题及答案
查看>>
Unity3D 相机路径设置 iTween & Camera Path Animator
查看>>
结对编程(四则运算题目生成器core第七组)对接心得
查看>>
树莓派双网卡配置
查看>>
linux关闭防火墙及selinux
查看>>
9.Spark Streaming
查看>>
hibernate反向生成
查看>>
零配置文件搭建SpringMvc
查看>>
模拟面试题一
查看>>
Hello World深入理解
查看>>
Lo4j(二)级别和优化
查看>>