給乙個起點為l終點為r的區間,求這個區間內的數的k次方的全部因子有多少個。
設 n=p1^c1*p2^c2...,則d(n^k)=(k*c1+1)(k*c2+1)...,r-l>=1e6
先篩出10^6內的素數,再分解出[l,r]裡面的質因子,大於1e6的質數直接為(k+1)個因子。
#include using namespace std;
#define inf 0x3f3f3f3f
#define pi acos(-1.0)
typedef long long ll;
const int maxn=1e6+10;
const ll mod=998244353;
ll vis[maxn],p[maxn],a[maxn],num[maxn],ans;
ll l,r,k;
void solve(int pp)
}}int main()
for(int i=0;i<=n;i++)
for(int i=0;i<=n;i++)
ans=(ans+num[i])%mod;
printf("%lld\n",ans);
}return 0;
}
HDU 6069 素數篩法
思路 設 n p 1 p 2 p m n p 1 c 1 p 2 c 2 p m c m 則d n k kc 1 1 kc 2 1 kc m 1 d n c 1 1 c2 1 c m 1 則 d n k kc 1 1 kc 2 1 kc m 1 d n k kc 1 1 kc 2 1 k c m 1...
HDU6069(思維 素數定理)
比賽的時候有想到一次找所有數的乙個共同因數,結果沒有考慮素數的情況,想歪了,成了莫比烏斯反演。素數定理 任意乙個數都可以表示為n pa11 pa22 pak k n的所有因子個數為 a 1 1 a2 1 ak 1 然後對與每個在範圍內的質數,都進行一次遍歷,看是不是l r中某些數的因子。明白了同時對...
hdu6069 區間素數篩
hdu6069 counting divisors 傳送門題意 計算 sum d i k mod 998244353 其中 d n 表示 n 的約數個數,其中 1 leq l leq r leq 1e12,r l leq 1e6,1 leq k leq 1e7 題解 根據唯一分解定理 n p 1 p...