zoukankan      html  css  js  c++  java
  • 约数问题

    1、a|b

    性质:

    (1)若a|b且a|c,则对任意x,y,有a|(xb+yc);
    (2)若a|b且a|c,则a|c;
    (3)设m!=0,则a|b,当且仅当ma|mb;
    (4)若a|b且b|a,则a=±b;
    带余除法:设a,b是两个正整数,且b!=0,则存在唯一的整数q和r,使a=qb+r(0<=r<|b|).

    2、算术基本定理的推论

    对于N=P1C1•P2C2•......•PmCm,则N的正约数集合可写成{P1b1•P2b2•......•Pmbm},其中0<=bi<=ci

    N的正约数个数:(c1+1)•(c2+1)•......•(cm+1)
    Ny :(yC1+1)•(yC2+1)•......•(yCm+1)
    N的所有正约数的和:(1+P1+P12+......+P1C1)•(1+P2+P22+......+P2C2)•......•(1+Pm+Pm2+......+PmCm)

    3、约数和

    3.1 单个数约数和

    时间复杂度:O(√n)

    for(int i=1;i*i<=n;++i){
       if(n%i==0){
         f[++cnt]=i;
         if(i!=n/i) f[++cnt]=n/i;
       }
    }
    

    3.2 N个数约数和(打表)

    时间复杂度:O(n√n)

    vector<int> f[N];
    for(int i=1;i<=n;++i)
       for(int j=1;j<=n/i;++j)
          f[i*j].push_back(i);
    

    3.3 N个数约数和的和(整除分块)

    时间复杂度:O(n)

    (1)for(int i=1;i<=n;++i) ans+=(n/i*i);
    
    (2)ll fun(ll x)
        {
    	ll ans=0;
    	for(ll l=1,r;l<=x;l=r+1){
    	   r=x/(x/l);
    	   ans+=(r-l+1)*(x/l)*(l+r)/2;
    	}
        }
    
    
  • 相关阅读:
    CF869E The Untended Antiquity 解题报告
    Walk 解题报告
    CF911F Tree Destruction 解题报告
    P4397 [JLOI2014]聪明的燕姿
    洛谷 P2329 [SCOI2005]栅栏 解题报告
    洛谷 P3747 [六省联考2017]相逢是问候 解题报告
    set-erase
    set-empty
    set-empty
    set-end
  • 原文地址:https://www.cnblogs.com/unravel-CAT/p/15350806.html
Copyright © 2011-2022 走看看