首页 > 学院 > 开发设计 > 正文

[海盗分金] HDU 1538 A Puzzle for Pirates

2019-11-06 08:54:54
字体:
来源:转载
供稿:网友

久闻大名的海盗分金问题 详见HDU 1538 A Puzzle for Pirates(经典的海盗分金推理)

#include<cstdio>#include<cstdlib>#include<algorithm>#define read(x) scanf("%d",&(x))using namespace std;int fac[]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768};inline void Solve(int n,int m,int p){ if (2*m>=n){ if (n==p) PRintf("%d/n",m-(n-1)/2); else printf("%d/n",n%2==p%2); }else if (2*m+1==n){ printf("%d/n",p!=n && p&1); }else{ int t=n-2*m; for (int i=1;i;i++) if (fac[i]>t){ if (p>2*m+fac[i-1]) printf("Thrown/n"); else printf("0/n"); return; } }}int main(){ int T,n,m,p; freopen("t.in","r",stdin); freopen("t.out","w",stdout); read(T); while (T--) read(n),read(m),read(p),Solve(n,m,p); return 0;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表