UVa 11971 - Polygon(概率)

来源:互联网 发布:csol mac 编辑:程序博客网 时间:2024/05/28 09:32

把木条抽象成一个圆, 那么在圆上选取一点, 过圆心平分圆, 如果剩下的n个点在圆的同一侧, 则不能构成矩形, 跟N无关。

不能构成矩形的概率p = 1 / 2 ^ n, 起始点共有k + 1种, 所以能构成矩形的概率为1 - p * (k + 1)。

#include <iostream>using namespace std;long long gcd(long long a, long long b) {    return b == 0 ? a : gcd(b, a % b);}int main() {int T, Case = 0;cin >> T;while(T--) {int N, k;long long q, p = 1;  cin >> N >> k;for(int i = 0; i < k; i++) p *= 2;q = p - (k + 1);cout << "Case #" << ++Case << ": " << q / gcd(q, p)<< '/' << p / gcd(q, p) << endl; }return 0;}


0 0