莫比乌斯反演

来源:互联网 发布:情侣礼物知乎 编辑:程序博客网 时间:2024/05/17 22:43
typedef long long ll;const int MOD = 1e9+7;#define mod(x) (ll(x)%MOD)ll pow_m(ll a , ll n) {ll ret = 1;ll tmp = mod(a);while(n) {if(n&1) ret = mod(ret*tmp);tmp = mod(tmp*tmp);n >>= 1;}return ret;}//计算1 + p + p^2 +...+p^n;ll sum(ll p , ll n) {if(p == 0)return 0;if(n == 0)return 1;if(n & 1)return mod(mod(1 + pow_m(p , n/2+1 )) * mod(sum(p , n/2)));elsereturn mod(mod(1+pow_m(p , n/2+1)) * mod(sum(p , n/2)) + mod(pow_m(p , n/2)));}//返回A^B的约数之和%MOD;ll solve(ll A , ll B) {getFactors(A);ll ans = 1;for(int i = 0; i < fatCnt; i++) {ans *= mod(sum(factor[1][0] , B*factor[i][1]));ans = mod(ans);}return ans;} 

原创粉丝点击