|
1鱼币
这是我在BNUOJ新手题上遇到一个问题,取石子。(题目附于最后)
提交此题后用时1004ms(要求是1000ms以内),还望各位指教。
代码如下:
#include<stdio.h>
#define N 20
void main()
{
int i,n,stu1[N],stu2[N];//stu1[N]存n,stu2[N]存m
restart1:scanf("%d",&n);
if(n>20)
goto restart1;//n小于20
for(i=0;i<n;i++)
{
restart2:scanf("%d%*c%d",&stu1[i],&stu2[i]);
if(stu1[i]<1||stu2[i]>1000||stu2[i]<1||stu2[i]>=stu1[i])//限制范围
goto restart2;
}
for(i=0;i<n;i++)
{
if(stu1[i]%(stu2+1)==0)
printf("second\n");
else
printf("first\n");
}
}
题目如下:
1、 本游戏是一个二人游戏;
2、 有一堆石子一共有n个;
3、 两人轮流进行;
4、 每走一步可以取走1…m个石子;
5、 最先取光石子的一方为胜;
如果游戏的双方使用的都是最优策略,请输出哪个人能赢。
Input 输入数据首先包含一个正整数C(C ≤20),表示有C组测试数据。
每组测试数据占一行,包含两个整数n和m(1≤n,m≤1000),n和m的含义见题目描述。
Output 如果先走的人能赢,请输出“first”,否则请输出“second”,每个实例的输出占一行。
Sample Input 223 24 3
Sample Output firstsecond
[/i][/i][/i][/i][/i][/i][/i][/i] |
|