题解来自这篇博客:http://blog.youkuaiyun.com/ramay7/article/details/51920916
题意:求[a,b]中每一个数n写成x^y形式(多种表示只取最大幂y)的y的和 hdu3208
第一反应前缀和,然而看到1e18,1s内求,光遍历都吃不消好吗
想了一下,n以内能开方的数有根号n个
也就是1~n以内能写成a^2形式的有根号n个(向下取整)
比如n=12 只有1 2 3满足要求
i^2<=n
1<=i<=sqrt(n) 均可取
所以i有sqrt(n)个
那么n以内写成i^3,i^4的个数也是同理
这种感觉就像问:n以内能整除3的有多少个正数, 1<=i<=n/3
就是n/3个,一个意思
回到原题,所以我们只要算ans=i*n^(1/i)=i*num[i]就好了 1<=i<=62 2^62>1e18
然而!,问题是64能写成2^6 4^4 8^2,
a^2形式的数目要减掉a^4形式的数目
因为a^4=(a^2)^2的数目都在a^2里面被算过了
所以num[2]-=num[4] 减掉的部分已经在更大的幂(4)中出现
同理:num[2]-=num[6],num[2]-=num[8] ,num[4]-=num[8]....
对于每一个num[j]都要减去i%j==0的num[i],i>j
n^(1/i)精度的部分没搞懂,推荐看下面的博客
题解来自这篇博客:http://blog.youkuaiyun.com/ramay7/article/details/51920916