BZOJ 3309 DZY Loves Math
2017-07-13 21:15
393 查看
3309: DZY Loves Math
Description
对于正整数n,定义f(n)为n所含质因子的最大幂指数。例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0。给定正整数a,b,求sigma(sigma(f(gcd(i,j)))) (i=1..a, j=1..b)。
Input
第一行一个数T,表示询问数。接下来T行,每行两个数a,b,表示一个询问。
Output
对于每一个询问,输出一行一个非负整数作为回答。Sample Input
47558588 9653114
6514903 4451211
7425644 1189442
6335198 4957
Sample Output
3579345393990114225956593420
4332838845846
15400094813
HINT
【数据规模】T<=10000
1<=a,b<=10^7
这道题我足足写了一白板。因为这实在是一道好题。
我们要求∑∑f(gcd(i,j)),可以枚举d=gcd(i,j)
则有∑f(d)∑∑[gcd(i,j)==d]=∑f(d)∑∑e(gcd(i,j))=∑f(d)∑∑∑[k|i][k|j]mu(k)
即为∑f(d)∑mu(k)(n/dk)(m/dk)
令T=dk,则d|T,k=T/d,故有∑(n/T)(m/T)∑f(d)mu(T/d)。设g(T)=∑f(d)mu(T/d)。
/************************************************************** Problem: 3309 User: Doggu Language: C++ Result: Accepted Time:11000 ms Memory:166836 kb ****************************************************************/ #include <cstdio> #include <algorithm> const int N = 1e7+5; int minpa , a , g , prime , ptot; bool vis ; void EULER(int n) { for( int i = 2; i <= n; i++ ) { if(!vis[i]) prime[++ptot]=i, minpa[i]=i, a[i]=1, g[i]=1; for( int j = 1; j <= ptot; j++ ) { if((long long)i*prime[j]>n) break; vis[i*prime[j]]=1; minpa[i*prime[j]]=prime[j]; a[i*prime[j]]=1; g[i*prime[j]]=(a[i]==1?-g[i]:0); if(i%prime[j]==0) { minpa[i*prime[j]]=minpa[i]*prime[j]; a[i*prime[j]]=a[i]+1; int temp=i/minpa[i]; if(temp==1) g[i*prime[j]]=1; else g[i*prime[j]]=(a[temp]==a[i*prime[j]]?-g[temp]:0); break; } } } for( int i = 1; i <= n; i++ ) g[i]+=g[i-1]; } int main() { int T, n, m; EULER(1e7); scanf("%d",&T); while(T--) { scanf("%d%d",&n,&m); long long ans=0; if(n>m) std::swap(n,m); for( int a = 1, ed; a <= n; a = ed + 1 ) { ed=std::min(n/(n/a),m/(m/a)); ans+=(long long)(g[ed]-g[a-1])*(n/a)*(m/a); } printf("%lld\n",ans); } }
狄利克雷卷积+函数推演+欧拉筛+分块
相关文章推荐
- bzoj 3309: DZY Loves Math 莫比乌斯反演
- bzoj3309 DZY Loves Math 数论
- BZOJ 3309 DZY Loves Math 莫比乌斯反演
- [BZOJ3309]DZY Loves Math(莫比乌斯反演+线性筛)
- [bzoj3309] DZY Loves Math
- BZOJ 3309 DZY Loves Math
- BZOJ 3309 DZY Loves Math
- BZOJ 3309 DZY Loves Math (莫比乌斯反演的应用 好题)
- 【莫比乌斯反演】BZOJ3309 DZY Loves Math
- ●BZOJ 3309 DZY Loves Math
- bzoj 3309 DZY Loves Math
- bzoj 3309: DZY Loves Math (反演)
- 【BZOJ 3309】DZY Loves Math
- [BZOJ3309]DZY Loves Math
- BZOJ 3309: DZY Loves Math
- bzoj 3309 DZY Loves Math - 莫比乌斯反演 - 线性筛
- 【线性筛】【bzoj 3309】: DZY Loves Math
- BZOJ 3309 DZY Loves Math
- bzoj 3309: DZY Loves Math
- BZOJ 3309: DZY Loves Math [莫比乌斯反演 线性筛]