hdu 4790 Just Random 锛?013鎴愰兘J棰橈級 鏁板鎬濊矾棰?瀹规枼
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 4790 Just Random 锛?013鎴愰兘J棰橈級 鏁板鎬濊矾棰?瀹规枼相关的知识,希望对你有一定的参考价值。
鏍囩锛?/p>
棰樻剰锛氬湪[a,b] [c,d] 涔嬮棿锛屽拰妯绛変簬m鐨勫鏁?/span>
璇﹁浠g爜
1 #include <stdio.h> 2 #include <algorithm> 3 #include <string.h> 4 #include<cmath> 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鍒皒鍖洪棿锛?鍒皔鍖洪棿鐨勭粍鍚堝鏁?/span> 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 }
以上是关于hdu 4790 Just Random 锛?013鎴愰兘J棰橈級 鏁板鎬濊矾棰?瀹规枼的主要内容,如果未能解决你的问题,请参考以下文章
Just Random HDU - 4790 思维题(打表找规律)分段求解