博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【图灵杯 A】谷神的赌博游戏
阅读量:4624 次
发布时间:2019-06-09

本文共 1579 字,大约阅读时间需要 5 分钟。

【题目链接】:

【题意】

【题解】

把每个数字都%3处理;
会发现最后1的个数为n+1
2和0的个数都为1
也就是说2的个数比1的个数要少1个;
这样;我们先不用考虑0;
因为它对%3的结果不会造成影响;
这里先考虑开头是2的情况
假设我们放了一个2在开头;
则我们只能再放一个2了;
即22
因为不能21吧
那然后呢
现在为22
->%3==1
接下来不能放2了;
只能放1
221
然后%3==2
又放2
->2212
->%3==1
这里可以发现,只能1,2,1,2地放了
我们这里再放一个1的话
22121
会发现,1的个数永远比2的个数少1个;
也就是说,在某个时刻,需要2的时候,没有2了,只剩下1了!??
那么就无解了!!
所以开头不能为2
那么只能为1了
既然开头为1
->1
然后只能再放1了
->11
然后
->112
会发现%3==1
这个时候只能再放1
->1121
可以发现只能是
->112121212
这时可以发现,放完2之后,1总是比2多一个;
而这是可行的!
所以1和2的位置是确定的;
只是要放哪些数字的问题了;
然后在3*n个位置中(开头不能放0)选n个位置放0;
结果就为
A(3n,n)A(n,n)A(n+1,n+1)/A(3n+1,3n+1)
化简一下可以变成
n!/((n+2)(n+3)...2n(3n+1))
【Number Of WA
0
【完整代码】

#include 
using namespace std;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define LL long long#define rep1(i,a,b) for (int i = a;i <= b;i++)#define rep2(i,a,b) for (int i = a;i >= b;i--)#define mp make_pair#define pb push_back#define fi first#define se second#define ms(x,y) memset(x,y,sizeof x)#define Open() freopen("F:\\rush.txt","r",stdin)#define Close() ios::sync_with_stdio(0),cin.tie(0)typedef pair
pii;typedef pair
pll;const int dx[9] = {
0,1,-1,0,0,-1,-1,1,1};const int dy[9] = {
0,0,0,-1,1,-1,1,-1,1};const double pi = acos(-1.0);const int N = 110;double ans;int k;int main(){ //Open(); Close(); cin >> k; while (k--){ int n; cin >> n; ans = 1; rep1(i,1,n) ans = ans*i; rep1(i,n+2,2*n) ans/=i; ans/=(3*n+1); cout << fixed << setprecision(9) << ans << endl; } return 0;}

转载于:https://www.cnblogs.com/AWCXV/p/7626256.html

你可能感兴趣的文章
linux学习:CentOS、Mac上SSH的设置以及SceureCRT中的文件上传下载
查看>>
[svc]find+xargs/exec重命名文件后缀&文件操作工具小结
查看>>
MyBatis
查看>>
ZOJ
查看>>
链表的创建、增加、删除、改数据、遍历
查看>>
查看mysql表的字符集
查看>>
《鸟哥的Linux私房菜》读书笔记4
查看>>
关于SQL中的ROWNUM问题
查看>>
centos7安装mysql5.6
查看>>
CentOS7上搭建gitlab服务器
查看>>
jquery 插件大全
查看>>
UWP?UWP! - Build 2015有些啥?(2)
查看>>
求100到999之内的水仙花数
查看>>
11_控制线程_多线程同步
查看>>
luogu2085 最小函数值
查看>>
含参变量积分-Leibniz法则
查看>>
多态与重载
查看>>
Mybatis 的输入参数学习
查看>>
(2.7)Mysql之SQL基础——表的操作与查看
查看>>
我不是蜘蛛侠,也不是蝙蝠侠,只是路人甲
查看>>