2013 ACM/ICPC Asia Regional Changchun Online
-------解题报告
1.HDOJ-4764
题意:
两个人在白纸上写数字,谁先写到比N更大的数(坑点:包括N),谁就输。抽象出来的模型就是,取石子游戏,巴什博奕。巴什博奕的口诀是加一整除,先手必输。在巴什博奕中谁赢了,意味着谁先取到N,在这道题中,谁先取到N-1,谁就是赢家。因为留给对手的只有N,所以他必输!
代码:
int main() { #ifdef LOCAL //freopen("in.txt", "r", stdin); //freopen("out.txt", "w", stdout); #endif // LOCAL int N, k; while(cin >> N >> k && N && k) { if ((N - 1) % (k + 1) == 0) cout << "Jiang" << endl; else cout << "Tang" << endl; } return 0; }注意:用(N-1) % (k + 1) == 0实际上就是加一整除,先手必输,用N-1取代N,表示赢家先取到N-1,这道题的输家就会取N这个数!
本文深入解析了HDOJ-4764题目的核心逻辑,揭示了取石子游戏与巴什博奕的联系,通过加一整除原则,解释了如何判断先手必输的条件,并提供了简洁的代码实现。
708

被折叠的 条评论
为什么被折叠?



