SP16033 TIPTOP - Tip Top Game 题解

Description

Alim 和 Sufian 是好朋友。他们最近找到了一个好玩的游戏,叫做 Tip Top。游戏规则如下:

  • 确定一个整数。
  • 找出这个整数的所有因子。
  • Alim 先手,每人轮流取一个因子。谁先取到最后一个因子谁就是赢家。

假设整数为 \(n\),请问 Alim 是否能赢。

数据范围:\(T\) 组数据,\(T\leqslant 10^5\),\(1\leqslant n\leqslant 10^{18}\)。

Solution

非常简单的一道题目。由题目可知,我们只需要求出因子的个数的奇偶性即可。

那怎么判断因子个数的奇偶性?这其实也是一个比较显而易见的结论:如果 \(n\) 是一个完全平方数,那么 \(n\) 的因子个数是奇数,否则 \(n\) 的因子个数是偶数。证明也很简单,我们知道,如果 \(i\) 是 \(n\) 的一个因子,那么 \(\frac ni\) 也是 \(n\) 的一个因子。那么如果 \(n\) 是完全平方数,那么就会存在一个因子 \(i\),使得 \(i=\frac ni\),那么 \(i\) 和 \(\frac ni\) 就重复了,需要剔除一个。这也就能够解释 \(n\) 是完全平方数时它的因子个数是奇数了。

那么这道题目就做完了,注意输出格式。

Code

namespace Solution {
	iv Main() {
		MCase {
			ll n; read(n);
			printf("Case %d: ", kase);
			((ll)sqrt(n) * (ll)sqrt(n) == n) ? Yes : No;
		}
		return;
	}
}
上一篇:hdu 6681 Rikka with Cake(扫描线)


下一篇:2021/11/23