codeforces 1225D. Power Products
题意
计算满足$a_{i}*a_{j}=x^k,i<j$的对数。
思路
考虑$x*y=p^k$,将$x$和$y$进行质因子分解可得:
如果对于$x$和$y$有着不同的质因子,那么该质因子的次数一定是$k$的倍数,如果有着相同的质因子,那么$t_i+m_i$也一定是$k$的倍数,因此,可以考虑把$a_i$进行质因子分解,将幂次模$k$后构造成新的数字即可把每个数字压缩,这样只需要考虑$t_i+m_i=k$的情况,利用map存一下然后$O(n)$的扫一遍即可。
代码
1 |
|