多边形的组成条件是最长边不能占边长总和的一半,将木棒想象成圆多砍一刀,然后是简单概率.
Time Limit: 1000MS |
|
Memory Limit: Unknown |
|
64bit IO Format: %lld & %llu |
Submit Status
Description
Time Limit: 1 sec
Memory Limit: 32 MB
John has been given a segment of lenght N, however he needs a polygon. In order to create a polygon he has cut given segment K times at random positions (uniformly distributed cuts). Now he
has K+1 much shorter segments. What is the probability that he can assemble a polygon using all new segments?
INPUT
The number of tests T (T ≤ 1000) is given on the first line. T lines follow, each of them contains two integers N K (1 ≤ N ≤ 106; 1 ≤ K ≤
50) described above.
OUTPUT
For each test case output a single line "Case #T: F" . Where T is the test case number (starting from 1) and F is the result as simple fraction in form of N/D .
Please refer to the sample output for clarity.
SAMPLE
INPUT
2
1 1
2 2
SAMPLE
OUTPUT
Case #1: 0/1
Case #2: 1/4
Problem by: Aleksej Viktorchik; Leonid Sislo
Huge Easy Contest #2
Source
Root :: AOAPC II: Beginning Algorithm Contests (Second Edition) (Rujia Liu) :: Chapter 10. Maths :: Examples
Root :: Prominent Problemsetters :: Leonid Shishlo
Root :: Prominent Problemsetters :: Aleksej Viktorchik
Root :: AOAPC I: Beginning Algorithm Contests -- Training Guide (Rujia Liu) :: Chapter 2. Mathematics :: Probability :: Exercises:
Intermediate
Submit Status
|
 |
/* ***********************************************
Author :CKboss
Created Time :2015年01月30日 星期五 21时37分11秒
File Name :UVA11971.cpp
************************************************ */
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string>
#include <cmath>
#include <cstdlib>
#include <vector>
#include <queue>
#include <set>
#include <map>
using namespace std;
typedef long long int LL;
int n;
LL gcd(LL a,LL b)
{
if(b!=0) return gcd(b,a%b);
return a;
}
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int T_T,cas=1;
scanf("%d",&T_T);
while(T_T--)
{
scanf("%*d%d",&n);
LL fenzhi = (1LL<<n)-n-1;
LL fenmu = (1LL<<n);
LL g = gcd(fenzhi,fenmu);
printf("Case #%d: %lld/%lld\n",cas++,fenzhi/g,fenmu/g);
}
return 0;
}