hdu 4790 Just Random 锛?013鎴愰兘J棰橈級 鏁板鎬濊矾棰?瀹规枼

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 4790 Just Random 锛?013鎴愰兘J棰橈級 鏁板鎬濊矾棰?瀹规枼相关的知识,希望对你有一定的参考价值。

鏍囩锛?/p>

棰樻剰锛氬湪[a,b]  [c,d] 涔嬮棿锛屽拰妯绛変簬m鐨勫鏁?/span>

璇﹁浠g爜

 

鎶€鏈垎浜? id=
 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 }
View Code

 

以上是关于hdu 4790 Just Random 锛?013鎴愰兘J棰橈級 鏁板鎬濊矾棰?瀹规枼的主要内容,如果未能解决你的问题,请参考以下文章

Just Random HDU - 4790 思维题(打表找规律)分段求解

Just a Hook HDU - 1698Just a Hook HDU - 1698 线段树区间替换

hdu 1698 Just a Hook

Just a Hook HDU - 1698

HDU - 1698 Just a Hook

HDU - 1698 Just a Hook