平日里写hash的时候,总有某些选手由于脸黑而导致惨遭卡模数,然后一些恶意卡模数的出题人也因此身败名裂,为了防止被卡,我们用一种高级的随机方式来代替原来的线性随机生成,也就是所谓的随机树!
平日里写hash的时候,总有某些选手由于脸黑而导致惨遭卡模数,然后一些恶意卡模数的出题人也因此身败名裂。为了防止被卡,我们用一种高级的随机方式来代替原来的线性随机生成,也就是所谓的随机树! 现在有一棵编号为0~n-1的有根树,其中0是树的根。每个节点初始有一个值Ti。现在要求支持一下两种操作: 1. 给出两个正整数u和x,我们将Tu的值乘以x,我们将这种操作称为SEED操作。 2. 给出一个正整数i,询问Si以及它一共有多少个正约数。其中Si表示以i为根的子树所有点的权值的乘积,我们将这种操作称为RAND操作。 容易发现,这样得到的答案还是很随机的。(其实不是) 你需要回答每一次的询问,由于一个数的约数个数可能非常多,这个数也可以非常大,你只需要把答案对1e9+7取模就可以了。
(图片来源网络,侵删)
标签: HBC14527随机树题解