1 solutions
-
1经典的取石子游戏(巴什博弈),题面基本上都是废话,总结一下就是一共n张卡,a,b两人轮流抽,每人每次最多抽k张,a先抽,问谁抽到最后一张。
如果我们把两人各抽一次作为一轮,那么我们不难发现这一轮一共抽了多少张卡是由后抽卡的人决定的。比如一共8张卡,每次最多抽3张,那么a无论是抽1张、2张还是三张,b都可以把这一轮抽的总张数控制为4张。按照这样抽卡的话,一共8张卡,两轮后刚好抽完,那么b就一定抽到最后一张也就是说,当总张数n能够被(k+1)整除时,b抽到最后一张,反之a抽到最后一张。代码如下:#include<iostream> #include<algorithm> using namespace std; int main(){ int t; int a[1000]; int k,n; scanf("%d",&t); for(int i=0;i<t;i++){ scanf("%d %d",&k,&n); if(n%(k+1)) printf("I'll all twice.\n"); else printf("I'll all once.\n"); } return 0; }
</p>
Information
- ID
- 6508
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 8
- Tags
- # Submissions
- 120
- Accepted
- 16
- Uploaded By