zoukankan      html  css  js  c++  java
  • UVa 11971 (概率) Polygon

    题意:

    有一根绳子,在上面随机选取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
    ", kase, a[k], b[k]);
    37     }
    38 
    39     return 0;
    40 }
    代码君
  • 相关阅读:
    [BZOJ3257]树的难题
    [BZOJ4987]Tree
    [NOI2015][洛谷P2150]寿司晚宴
    P2221 [HAOI2012]高速公路
    BUG全集(我遇到的)
    NOIP2018游记
    BZOJ1103
    Google Chrome 优化
    特殊空格
    Ant Design Vue 使用
  • 原文地址:https://www.cnblogs.com/AOQNRMGYXLMV/p/4189331.html
Copyright © 2011-2022 走看看