C - Product and GCD
Solved.
题意:
给出$n个数$的乘积,求$这n个数$的最大的可能是GCD
思路:
分解质因子,那么$每个质因子的贡献就是其质因子个数/ n的乘积$
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 #define ll long long 5 ll n, p; 6 7 int main() 8 { 9 while (scanf("%lld%lld", &n, &p) != EOF) 10 { 11 if (n == 1) 12 { 13 printf("%lld\n", p); 14 continue; 15 } 16 ll res = 1; 17 for (ll i = 2; i * i <= p; ++i) 18 { 19 ll tmp = 0; 20 while (p % i == 0) 21 { 22 ++tmp; 23 p /= i; 24 } 25 while (tmp >= n) 26 { 27 tmp -= n; 28 res *= i; 29 } 30 } 31 printf("%lld\n", res); 32 } 33 return 0; 34 }
D - Harlequin
Solved.
题意:
有$n种颜色的苹果,每种颜色有a_i个,每次可以选择若干个不同颜色的苹果拿掉,轮流拿,谁不能拿谁输$
扫描二维码关注公众号,回复:
4615540 查看本文章
问 先手胜还是后手胜
思路:
必败局面是当前场上所有颜色的苹果都是偶数个,这样的话,你拿什么,对方跟着你拿,对方肯定胜利
那么必胜局面就是当前场上存在有若干种奇数个颜色的苹果,取掉这些苹果,转换成必败局面留给对方就好了
简单判一判就没了
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 int n, x; 5 6 int main() 7 { 8 while (scanf("%d", &n) != EOF) 9 { 10 x = 0; 11 for (int i = 1, y; i <= n; ++i) 12 { 13 scanf("%d", &y); 14 x += y & 1; 15 } 16 puts(x ? "first" : "second"); 17 } 18 return 0; 19 }