• 数论函数


    基本定义直接上图
    还有神奇教学网站 莫比乌斯反演入门欧拉反演orz

    上图中k的含义:将n分解(n = {p_1}^{a_1}{p_2}^{a_2}...{p_k}^{a_k}) n的所有因子中,有r个质因子的方案数为C(r,k),( herefore mu = (-1)^rC(r,k))

    (sum_{i=1}^{n}lfloorfrac{n}{i} floor)

    题意

    整除分块模板,


    题解

    注意到(lfloorfrac{n}{i} floor)只有(sqrt{n})种取值。
    求和时我们从小到大枚举每次使(lfloorfrac{n}{i} floor)变化的i即可,
    如何枚举?注意到r=n/i是连续(lfloorfrac{n}{i} floor)串以i结尾的最后一个数的位置(数组下标从1开始),
    所以下一个l=r+1;而这个区间内(lfloorfrac{n}{i} floor)的值就是n/l。
    另外有性质:
    (lfloorfrac{lfloorfrac{n}{a} floor}{b} floor = lfloorfrac{n}{ab} floor)

    (lceilfrac{lceilfrac{n}{a} ceil}{b} ceil = lceilfrac{n}{ab} ceil)


    代码

    for(int l=1,r;l<=n;l=r+1)
    {
        r=n/(n/l);
        ans+=(r-l+1)*(n/l);
    }
    
    
    //整除分块向上取整题[gym101485]Debugging  
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int nmax=1e6+100;
    ll dp[nmax];
    const ll inf=1e15;
    
    ll dfs(ll n,ll R,ll P){
        if(n<=1)    return 0;
        if(dp[n])   return dp[n];
        dp[n]=(n-1)*P+R;
        for(int l=2,r;l<=(n-1);l=r+1){
            //每组l-r个,组数均为n/l
            r=(n-1)/((n-1)/l);
            /*
                空格要填上n/l个,无论是除的尽除不尽。
                8对于l=3:00100100
                     r=4:00010001
                     要填的空格数=组数 8/3=8/4
            */
            ll tt=dfs(l-1,R,P)+R+((n-1)/l)*P;
            dp[n]=min(dp[n],tt);
        }
        return dp[n];
    }
    int main(){
        ll n,r,p;
        scanf("%I64d%I64d%I64d",&n,&r,&p);
        printf("%I64d
    ",dfs(n,r,p));
        return 0;
    }
    

    HDU5528 Count a * b (2015长春B )

    题意


    题解

    数论函数进阶题。

    涉及迪利克雷卷积的一些推导。


    代码

    //头文件省略
    
    
    

    心路历程

    orz数论大佬
    先挖坑
    

    bzoj2820 P2257 YY的GCD

    题意

    (sumlimits ^{n}_{i=1}sumlimits ^{m}_{j=1}[ gcd( i,j) =p])


    题解

    不能再用入门篇中解(sumlimits ^{n}_{i=1}sumlimits ^{n}_{j=1}[ gcd( i,j) =p]) 时的 $phi $前缀和.
    考虑算 (sumlimits ^{n}_{i=1}sumlimits ^{m}_{j=1} gcd( i,j) *2-1) 时的容斥。
    当时用的是(f[x]=(n/x)*(m/x)-Σ(2*x<=i*x<=min(m,n))f[i*x]) 倒着更新的容斥。
    这里正式给出容斥公式:

    (left| igcup_{i=1}^n A_i ight| = sum_{i=1}^n|A_i| - sum_{1leq i<jleq n} |A_i cap A_j| + sum _{1leq i<j<kleq n}|A_i cap A_j cap A_k| - cdots + (-1)^{n-1} | A_1 cap cdots cap A_n |)

    i.e. (left|igcup_{i=1}^n A_i ight| = sum_{emptyset eq Jsubseteq {1,2,ldots ,n}} (-1)^{|J|-1}{Biggl |}igcap_{jin J}A_{j}{Biggr |})

    开头的两个网站给出了山寨做法,这里给出正式的公式:

    代码

    //头文件省略
    
    
    

    心路历程

    
    

    P2522 BZOJ2301 hdu1695(数据弱) Problem b

    题意

    (sumlimits ^{b}_{i=a}sumlimits ^{d}_{j=c} gcd( i,j) =k)


    题解


    代码

    //头文件省略
    
    
    

    心路历程

    
    

    P3312 [SDOI2014] bzoj3529 数表

    题意

    $sumlimits _{ egin{array}{l}
    1leqslant ileqslant n
    1leqslant jleqslant m
    F( gcd( i,j)) leqslant a
    end{array}} F( gcd( i,j)) mod 2^{31} $


    题解


    代码

    //头文件省略
    
    
    

    心路历程

    
    

    P1829 bzoj 2154 [国家集训队]Crash的数字表格 / JZPTAB

    题意

    (sumlimits ^{n}_{i=1} sumlimits ^{m}_{j=1} lcm( i,j))


    题解

    鬼畜推导


    代码

    //头文件省略
    
    
    

    心路历程

    
    

    P1829 [国家集训队]Crash的数字表格 / JZPTAB

    题意

    同上题,多组数据


    题解


    代码

    //头文件省略
    
    
    

    心路历程

    
    

    luoguP1403 luoguP3935 P2158 [SDOI2008]仪仗队 P1390 公约数的和

    UVA11417 GCD UVa11424 GCD - Extreme (I)

    HDU 6428

    成功的路并不拥挤,因为大部分人都在颓(笑)
  • 相关阅读:
    org.dom4j.DocumentException: null Nested exception: null
    严重: 文档无效: 找不到语法。 at (null:2:19)
    微信 群好友 的返回微信号 有阉割
    Perl 面向对象的真正意思
    门外汉怎么成就咨询大单(1)——北漂18年(39)
    Perl 微信模块--Weixin::Client
    Solr使用入门指南
    Perl 对象是函数的第一个参数
    haproxy 4层负载
    mysql 从读负载
  • 原文地址:https://www.cnblogs.com/SuuT/p/10579099.html
Copyright © 2020-2023  润新知