cf 上的一道好题; 首先发现能生成所有数字-N 判断奇偶 就行了,但想不出来,如何生成所有数字,解题报告 说是 所有数字的中最大的那个数/所有数字的最小公倍数,好像有道理;纪念纪念;
#include<iostream> #include<stdio.h> #include<algorithm> #include<cstring> #include<algorithm> #include<cmath> using namespace std; int arr[112]; int gcd( int a,int b ){ if( b == 0 )return a; else return gcd( b,a%b ); } int main( ) { int N; while( scanf("%d",&N) != EOF ) { for( int i = 1; i <= N; i++ ){ scanf("%d",&arr[i]); } sort( &arr[1],&arr[1]+N ); int t = arr[1]; for( int i = 2; i <= N; i++ ) t = gcd( t,arr[i] ); N = arr[N]/t - N; if( N%2 )puts("Alice"); else puts("Bob"); } return 0; }