【數列遞推】爭奪基友

来源:互联网 发布:hp打印机端口设置 编辑:程序博客网 时间:2024/05/16 07:57

【问题描述】   小宸和小松都很想和乐乐在一起,但是乐乐说他只需要一个基友。于是小宸和小松决定用抛掷硬币的方式来决定谁能成为乐乐的基友。   游戏共有 n局,规则如下:一人先掷,如果掷得正面,则此人获胜,如果是反面则由另外一人掷,如此交替,直到第一次抛出正面时本局结束,掷得正面者获胜。下一局则由未获胜的人先掷,规则同上。   由于小宸希望成为乐乐基友的愿望非常强烈,于是找到了聪明的你,请你告诉他,小宸在第 n局恰好获胜的概率是多少。另外他还告诉你,第一局是由小宸先掷。  【输入数据】 一个整数 n,含义如题目描述。  【输出数据】 一个最简分数,形如 a/b,表示小宸在第 n局恰好获胜的概率。  【样例输入】 2  【样例输出】 4/9  【数据范围及约定】 对于 50%  的数据:1≤n≤16; 对于 100%的数据:1≤n≤32。 
首先對於題目描述表示強烈抨擊!

再說解題方法:

這道題是一個很簡單的數論題。
首先將n = 1時的概率求出來。

如圖所示,所以:


然後可得遞推式:


通過觀察可知:

於是得到了化簡的通項公式。

Accode:

#include <cstdio>int main(){  freopen("friend.in", "r", stdin);  freopen("friend.out", "w", stdout);  int n; scanf("%d", &n);  long long a, b = 3, tmp;  for (int i = 1; i < n; ++i) b += (b << 1);  printf("%I64d/%I64d", (b >> 1) + (n & 1), b);  return 0;}


原创粉丝点击