E - Alice and Bob
起初一眼以为是一道博弈问题,后来发现就是一个GCD();
求出GCD();后即可做倍数。
注意最后要-n
附AC代码:
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 int gcd(int a, int b) 5 { 6 return (b>0)?gcd(b,a%b):a; 7 } 8 9 int main() 10 { 11 int n, a[120], i; 12 cin>>n; 13 int Max = 1; 14 for(i = 0; i < n; i++) 15 { 16 cin>>a[i]; 17 if(a[i] > Max) 18 Max = a[i]; 19 } 20 int p = a[0]; 21 for(i = 1; i < n; i++) 22 p = gcd(p, a[i]); 23 int ans = Max/p - n; 24 printf(ans&1 ? "Alice\n" : "Bob\n"); 25 return 0; 26 }