解题思路:其实就是找能组成的最大集合。max(a[1],a[2],a[3].........a[n])/gcd(a[1],a[2],a[3],......a[n])
解题代码:
1 // File Name: e.cpp 2 // Author: darkdream 3 // Created Time: 2015年04月13日 星期一 13时56分11秒 4 5 #include<vector> 6 #include<list> 7 #include<map> 8 #include<set> 9 #include<deque> 10 #include<stack> 11 #include<bitset> 12 #include<algorithm> 13 #include<functional> 14 #include<numeric> 15 #include<utility> 16 #include<sstream> 17 #include<iostream> 18 #include<iomanip> 19 #include<cstdio> 20 #include<cmath> 21 #include<cstdlib> 22 #include<cstring> 23 #include<ctime> 24 #define LL long long 25 26 using namespace std; 27 int t; 28 int n ; 29 int gcd(int a, int b ) 30 { 31 return b == 0 ?a:gcd(b,a%b); 32 } 33 int main(){ 34 cin >> t; 35 int tmp ; 36 while(t--){ 37 cin >> n; 38 cin >> tmp ; 39 int ans = tmp ; 40 int mx = tmp ; 41 for(int i = 1;i < n;i ++) 42 { 43 cin >> tmp; 44 ans = gcd(ans,tmp); 45 mx =max(tmp,mx); 46 } 47 if((mx/ans - n)%2 ==0 ) 48 printf("Lose "); 49 else printf("Win "); 50 } 51 return 0; 52 }