luogu#P7608. [THUPC2021] 挑战图灵奖

[THUPC2021] 挑战图灵奖

题目背景

图染色问题是这样的——给定一个 nn 个点,mm 条边的图,要求将每个点染上一种颜色,满足任意有边相连的两个点颜色不同,问最少需要多少种颜色。众所周知,图染色是 NPC 问题之一,如果有人能在多项式时间内解决图染色问题,那就相当于证明了 P = NP,恭喜你,下一位图灵奖得主非你莫属!

题目描述

今天,你的好朋友——敏珂找到了你,宣称他证明了半个图染色问题,希望你帮他看看他的做法对不对,如果你能帮他验证,他会考虑与你分享图灵奖的奖金。敏珂宣称自己解决的问题是这样的:对于一个 nn 个点的无向图,图上所有节点编号为 1,2,,n1,2,\ldots, n,两点之间有连边,当且仅当两点编号在模 nn 意义下相差不超过 kk,即 (x,y)(x,y) 之间有一条无向边,当且仅当 xyx \neq y 且存在 ii 满足 1ik1 \le i \le k

(x+i)y(modn)(x+i) \equiv y \pmod n

(y+i)x(modn)(y+i) \equiv x \pmod n

,他能够快速求出这个图的染色数。作为评审,你只需要解决一个判定性问题——对于每组数据,敏珂会给出三个正整数 nnkkxx,表示在给定 nnkk 时(n,kn, k 的意义如上文所述),他认为这个图的染色数xx,你需要判断他的答案是否正确。

如果你认为他的答案是正确的,输出一行 Correct, but it doesn't necessarily mean that you can win the Turing Award.;如果你认为他的答案是错误的,在第一行输出 Wrong, don't cheat me, you are too far away from the Turing Award.。为了让你的答案更有信服力,你还需要在第二行输出一个字符 010 表示你认为敏珂的答案小于这个图的实际染色数,1 表示你认为他的答案大于这个图的实际染色数;如果你认为这个问题以当下计算机算力无法作出准确判断,输出一行 The problem is unsolvable, please stop cheating me, Mr.Minke.

输入格式

输入只有一行,包含三个正整数,分别表示 n,k,xn, k, x, 意义如题面所述。

其中 1x,n101,000,0001\le x, n \le 10^{1,000,000}1k1001 \le k \le 100,所有输入均为正整数,且对于所有数据,nn 只可能满足 n105n \le 10^5n10100n \ge 10^{100}

输出格式

输出共 1122 行,第一行表示你的判断结果,格式如题面所述;

如果你顺利完成判断并认为敏珂的答案是错误的,则需要在第二行输出一个字符 010 表示敏珂的答案小了,1 表示敏珂的答案大了。

6 2 4

Wrong, don't cheat me, you are too far away from the Turing Award.
1

提示

【样例解释】

很显然,给 161 \sim 6 号点分别染色为 1,2,3,1,2,31, 2, 3, 1, 2, 3 是可行的,所以 n=6n = 6k=2k = 2 情况下对应的染色数为 33

【提示】

  1. 如果没有 idea,请再次阅读题面给的数据范围,也许能对解题有一些帮助。

  2. Hint 1 可能没有用。

【题目来源】

来自 2021 清华大学学生程序设计竞赛暨高校邀请赛(THUPC2021)。

题解等资源可在 https://github.com/yylidiw/thupc_1/tree/master 查看。