给出一个reverse_prime,自身是一个7位数,反转后是一个<=1e6的素数。
首先求出所有的这种数
两种操作
q k :表示删除数字K
http://uva.onlinejudge.org/index.php option=com_onlinejudge&Itemid=8&page=show_problem&problem=2657
首先预处理出所有的reverse_prime,我的做法是先打出<=1e6的所有素数
然后将其反转,可以看出所有素数都是6位数,但是题目要求是7位数,可见原数的最低位都为0,可以不考虑这个0,之后的效率也许会快点。
将所有素数反转,然后凑成6位数。再算出每个数的素因子个数,不要忘记之前少算的末尾的0,也就是因子2和因子5.
对于统计部分,建立两个树状数组,第一 个表示区间内还有多少个数,第二个表示区间内因子个数和。
对于D操作, 直接用map记录某个reverse_prime的下标,然后更新两个树状数组
对于q操作,二分位置,然后用第一个树状数组,可以知道区间内有多少个数。最后用第二个树状数组求和。
[cpp]
#include
#include
#include