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

uva 11971 Polygon

时间:2017-06-04 21:25:27      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:一段   style   span   net   printf   技术分享   等价   答案   scan   

https://vjudge.net/problem/UVA-11971

 

有一根长度为n的木条,随机选k个位置把它们切成k+1段小木条。求这些小木条能组成一个多边形的概率。

 

将木条看做一个圆,线上切k刀等价于圆上切k+1刀

如果能组成多边形,每一段木条的长度都要<圆周长/2

反过来,如果不能组成多边形,有且仅有一段长度>=圆周长/2

技术分享

 

如图所示,第一刀可以随便切,接下来的每一刀都要在第一刀所在的那个半圆上

概率=(1/2)^k

每一个切点处,都可以断开成为线,共有k+1种断法

所以不能构成多边形的概率=(k+1)*(1/2)^K

答案就是用1减去它

 

注意:这是几何概型,可能情况无限,所以不能分析每一刀具体切在哪儿

 

 

 

 

#include<cstdio>
#include<algorithm>
using namespace std;
long long fz,fm,gcd;
long long bit[51];
int main()
{
    int t,n,k;
    bit[0]=1;
    for(int i=1;i<=50;i++) bit[i]=bit[i-1]*2; 
    scanf("%d",&t);
    for(int i=1;i<=t;i++)
    {
        scanf("%d%d",&n,&k);
        fz=bit[k]-k-1;
        fm=bit[k];
        gcd=__gcd(fz,fm);
        fz/=gcd; fm/=gcd;
        printf("Case #%d: %lld/%lld\n",i,fz,fm);
    }
}

 

uva 11971 Polygon

标签:一段   style   span   net   printf   技术分享   等价   答案   scan   

原文地址:http://www.cnblogs.com/TheRoadToTheGold/p/6941742.html

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