POJ 2368 Buttons

时间:2023-03-08 21:54:53

题目链接:http://poj.org/problem?id=2368

Bash game (巴什博弈):当K是(L+1)的倍数时可以确保second player赢。所以这道题要找的就是在K的因子中有没有大于2的因子。代码如下:

 #include <iostream>
#include <math.h>
#include <stdio.h>
#include <cstdio>
#include <algorithm>
#include <string.h>
#include <string>
#include <sstream>
#include <cstring>
#include <queue>
#include <vector>
#include <functional>
#include <cmath>
#include <set>
#define SCF(a) scanf("%d", &a)
#define IN(a) cin>>a
#define FOR(i, a, b) for(int i=a;i<b;i++)
#define Infinity 999999999
#define NInfinity -999999999
#define PI 3.14159265358979323846
typedef long long Int;
using namespace std; int main()
{
int K;
int a;
int factor[];
while (SCF(K) != EOF)
{
int len = ;
for (a = ; a*a <= K; a++)
{
if (K % a == )
{
factor[len++] = a;
factor[len++] = K / a;
}
}
sort(factor, factor + len);
bool found = false;
FOR(i, , len)
{
if (factor[i] > )
{
printf("%d\n", factor[i]-);
found = true;
break;
}
}
if (!found)
printf("0\n");
}
return ;
}