两个正整数A和B被称为相连的(用”A ↔ B”表示)如果以下条件之一成立:
(1)A和B的位数相同,且只有一位数字不同,例如123 ↔ 173。
(2)在A(或B)的左侧加一位数字即得到B(或A),例如23 ↔ 223和123 ↔ 23。
我们称素数P是2的亲戚,如果能用相连的素数组成的链连接2和P,且 这些素数都不超过P 。
后面一个条件非常有意思,能用dijkstra过,但是用并查集做更简单:
做法是枚举每一个质数对”比这个数小的数”连边,也就是只产生比这个数小的所有质数.
然后假如当前质数连不上边,立刻加到答案里(因为之后会产生向上的边,所以当前就必须加到答案里),只需要用并查集.