POJ 2368 Buttons(巴什博弈变形)
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; int a[1005]; int main() { int n; while(~scanf("%d",&n)) {//要后者胜,只要s=0,那么n=(m+1)*r,输出最小的m即可 int len=0; bool flag=0; for(int i=1;i*i<=n;i++)//循环应避免TLE { if(n%i==0) { a[len++]=i; a[len++]=n/i; } } sort(a,a+len); for(int i=0;i<len;i++) { if(a[i]>2) { printf("%d\n",a[i]-1); flag=1; break; } } if(!flag) printf("0\n"); } return 0; }