博弈论:倒腾思维D. Deleting Divisors——Codeforces Round #726 (Div. 2)
Posted 出尘呢
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了博弈论:倒腾思维D. Deleting Divisors——Codeforces Round #726 (Div. 2)相关的知识,希望对你有一定的参考价值。
https://codeforces.com/contest/1537/problem/D
博弈论:倒腾
- 1.n为非合数就会输
- 2.让n变为非合数的会赢
- 3.(需要想法)奇数好像可以变成非合数。奇数的因子是奇数,得到偶数
- 4.由于该奇数是m(奇)* n(奇)变为m * n-m=m(奇)(n-1)(偶)偶数,所以又可以减m变为奇数m(n-2),迟早会减为非合数的。
至此,奇数输,(奇)*(偶)赢
- 5.只剩下不能分解成(奇)*(偶)的了,必是2的幂次。
- 6.由于2输,2n要么减半要么减不到一半,如果不到一半,那又是非2n的(奇)*(偶)给对方赢。所以只能选减半还有希望。于是2^k是k为奇数则输,k为偶数则赢。
综上,输:奇数,2n且n为奇数。赢相反。
#include<iostream>
#ifdef LOCAL
FILE* FP = freopen("text.in", "r", stdin);
#endif
using namespace std;
int t, n, c;
signed main()
scanf("%d", &t);
while (t--)
scanf("%d", &n);
c = 0;
while (!(n & 1))
n >>= 1;
++c;
printf("%s\\n", (!c || (n == 1 && (c & 1))) ? "Bob" : "Alice");
以上是关于博弈论:倒腾思维D. Deleting Divisors——Codeforces Round #726 (Div. 2)的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #726 (Div. 2) D. Deleting Divisors(博弈,思维)
2017中国大学生程序设计竞赛 - 女生专场 Deleting Edges(思维+最短路)
CF 666 (Div. 2) D. Stoned Game博弈论