zoukankan      html  css  js  c++  java
  • 【Luogu P2257】 YY的GCD

    题目链接:

    题目

    博客园

    题目大意:

    快速求:

    [sum_{pin Prime}sum_{i=1}^{n}sum_{j=1}^{m}left[operatorname{gcd}(i,j)==p ight] ]

    正文:

    按照莫比乌斯反演的常规套路,将式子化简成我们能接受的时限:

    [egin{aligned}sum_{pin Prime}sum_{i=1}^{n}sum_{j=1}^{m}left[operatorname{gcd}(i,j)==p ight] &=sum_{pin Prime}sum_{i=1}^{lfloorfrac{n}{p} floor}sum_{j=1}^{lfloorfrac{m}{p} floor}left[operatorname{gcd}(i,j)==1 ight]\&=sum_{pin Prime}sum_{i=1}^{lfloorfrac{n}{p} floor}sum_{j=1}^{lfloorfrac{m}{p} floor}sum_{d|operatorname{gcd}(i,j)}mu(d)\&=sum_{pin Prime} sum_{d=1}mu(d)sum_{d|i}^{lfloorfrac{n}{p} floor}sum_{k|j}^{lfloorfrac{m}{p} floor}1\&=sum_{pin Prime}sum_{d=1}mu(d)leftlfloorfrac{n}{pd} ight floorleftlfloorfrac{m}{pd} ight floorend{aligned} ]

    (k=pd) 枚举 (k)

    [egin{aligned}sum_{pin Prime}sum_{d=1}mu(d)leftlfloorfrac{n}{pd} ight floorleftlfloorfrac{m}{pd} ight floor&=sum_{k=1}leftlfloorfrac{n}{k} ight floorleftlfloorfrac{m}{k} ight floorsum_{p|k,pin Prime}mu(frac{k}{p})end{aligned} ]

    预处理 (mu(frac{k}{p})),就能 (O(tsqrt{n}))

    代码:

    稍微卡卡常就能过了。

    inline void prework()
    {
    	miu[1] = 1;
    	for (int i = 2; i <= N - 10; i++)
    	{
    		if(!vis[i]) {pri[++cnt] = i, miu[i] = -1;}
    		for (int j = 1; j <= cnt && pri[j] * i <= N - 10; j++)
    		{
    			vis[pri[j] * i] = 1;
    			if (i % pri[j] == 0)
    			{
    				miu[i * pri[j]] = 0;
    				break;
    			}
    			else
    				miu[i * pri[j]] = -miu[i];
    		}
    	}
    	for (int i = 1; i <= cnt; i++)
    		for (int j = 1; j * pri[i] <= N - 10; j++)
    			sum[j * pri[i]] += miu[j];
    	for (int i = 1; i <= N - 10; i++)
    		sum[i] += sum[i - 1];
    }
    
    int main()
    {
    	prework();
    	for (read(t); t--; )
    	{
    		ans = 0LL;
    		read(n);read(m);
    		if(n > m)
    		{
    			ll c = n; n = m; m = c;
    		}
    		for (register int l = 1, r; l <= n; l = r + 1)
    		{
    			r = min (n / (n / l), m / (m / l));
    			ans += (sum[r] - sum[l - 1]) * (n / l) * (m / l);
    		}
    		print(ans);
    	}
    	return 0;
    }
    
  • 相关阅读:
    php笔记--php安装
    IEDA-Git的应用
    php类型
    3.比较与逻辑运算
    2.阶乘
    1.双分支
    013_request对象包含的内容以及获取
    011_jsp引入JSTL后实现jsp的解耦
    010_jsp引入JSTL
    ORACLE1.28 面试题
  • 原文地址:https://www.cnblogs.com/GJY-JURUO/p/13609391.html
Copyright © 2011-2022 走看看