码迷,mamicode.com
首页 > 其他好文 > 详细

UVa 11971 (概率) Polygon

时间:2014-12-27 22:59:10      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:

题意:

有一根绳子,在上面随机选取k个切点,将其切成k+1段,求这些线段能够成k+1边形的概率。

分析:

要构成k+1边形,必须最长的线段小于其他k个线段之和才行。

紫书上给出了一种解法,但是感觉理解得不是太好,所以又去网上找了其他解法。

知乎上有人问过这个问题,而且给出了很多种严格的解法。

 

最后代码里将(1LL << i)写成(1 << i),这种细节应当注意。

技术分享
 1 #include <cstdio>
 2 typedef long long ll;
 3 
 4 ll gcd(ll a, ll b)
 5 {
 6     if(b == 0) return a;
 7     return gcd(b, a % b);
 8 }
 9 
10 const int maxn = 50;
11 ll a[maxn + 5], b[maxn + 5];
12 
13 void Init_table()
14 {
15     b[1] = 1;
16     for(int i = 2; i <= maxn; ++i)
17     {
18         ll g;
19         b[i] = 1ll << i;
20         a[i] = b[i] - i - 1;
21         g = gcd(a[i], b[i]);
22         a[i] /= g, b[i] /= g;
23     }
24 }
25 
26 int main()
27 {
28     Init_table();
29     int t;
30     scanf("%d", &t);
31     for(int kase = 1; kase <= t; ++kase)
32     {
33         int k;
34         scanf("%d", &k);
35         scanf("%d", &k);
36         printf("Case #%d: %lld/%lld\n", kase, a[k], b[k]);
37     }
38 
39     return 0;
40 }
代码君

 

UVa 11971 (概率) Polygon

标签:

原文地址:http://www.cnblogs.com/AOQNRMGYXLMV/p/4189331.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!