BZOJ4407 :于神之怒加强版

本文介绍了一种解决特定数论求和问题的方法,利用积性函数和线性筛选技术来提高计算效率。该方法通过数学推导,将原始问题转化为更易于计算的形式,并给出了C++实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题面

戳我

Sol

\(ans=\sum_{d=1}^{N}d^k*\sum_{i=1}^{\lfloor\frac{N}{d}\rfloor}\mu(i)*\lfloor\frac{N}{d*i}\rfloor*\lfloor\frac{M}{d*i}\rfloor\)
\(将d*i换成S\)
\(原式=\sum_{S=1}^{N}(\lfloor\frac{N}{S}\rfloor)*(\lfloor\frac{M}{S}\rfloor)*\sum_{i|S}(\frac{S}{i})^k*\mu(i)\)
\(设f(n)=\sum_{i|n}(\frac{n}{i})^k*\mu(i)\),它是个积性函数,可以线性筛

# include <bits/stdc++.h>
# define RG register
# define IL inline
# define Fill(a, b) memset(a, b, sizeof(a))
using namespace std;
typedef long long ll;
const int _(5e6 + 1), MOD(1e9 + 7);

IL ll Read(){
    char c = '%'; ll x = 0, z = 1;
    for(; c > '9' || c < '0'; c = getchar()) if(c == '-') z = -1;
    for(; c >= '0' && c <= '9'; c = getchar()) x = x * 10 + c - '0';
    return x * z;
}

int prime[_], num, mu[_], f[_], k, po[_], s[_];
bool isprime[_];

IL int Pow(RG ll x, RG ll y){
    RG ll ret = 1;
    for(; y; y >>= 1, x = x * x % MOD) if(y & 1) ret = ret * x % MOD;
    return ret;
}

IL void Prepare(){
    isprime[1] = 1; s[1] = f[1] = 1;
    for(RG int i = 2; i < _; ++i){
        if(!isprime[i]) prime[++num] = i, po[i] = Pow(i, k), f[i] = (po[i] - 1 + MOD) % MOD;
        for(RG int j = 1; j <= num && i * prime[j] < _; ++j){
            isprime[i * prime[j]] = 1;
            if(i % prime[j]) f[i * prime[j]] = 1LL * f[i] * f[prime[j]] % MOD;
            else{  f[i * prime[j]] = 1LL * f[i] * po[prime[j]] % MOD; break;  }
        }
        s[i] = (f[i] + s[i - 1]) % MOD;
    }
}

int main(RG int argc, RG char *argv[]){
    RG ll T = Read(), n, m; k = Read(); Prepare();
    for(; T; --T){
        RG ll ans = 0; n = Read(); m = Read();
        if(n > m) swap(n, m);
        for(RG ll i = 1, j; i <= n; i = j + 1){
            j = min(n / (n / i), m / (m / i));
            (ans += 1LL * (s[j] - s[i - 1] + MOD) % MOD * (n / i) % MOD * (m / i) % MOD) %= MOD;
        }
        printf("%lld\n", (ans + MOD) % MOD);
    }
    return 0;
}

转载于:https://www.cnblogs.com/cjoieryl/p/8268628.html

内容概要:本文系统介绍了基于C#(VS2022+.NET Core)与HALCON 24.11的工业视觉测量拟合技术,涵盖边缘提取、几何拟合、精度优化及工业部署全流程。文中详细解析了亚像素边缘提取、Tukey抗噪算法、SVD平面拟合等核心技术,并提供了汽车零件孔径测量、PCB焊点共面性检测等典型应用场景的完整代码示例。通过GPU加速、EtherCAT同步等优化策略,实现了±0.01mm级测量精度,满足ISO 1101标准。此外,文章还探讨了深度学习、量子启发式算法等前沿技术的应用前景。 适合人群:具备一定编程基础,尤其是熟悉C#和HALCON的工程师或研究人员,以及从事工业视觉测量与自动化检测领域的技术人员。 使用场景及目标:①学习如何使用C#和HALCON实现高精度工业视觉测量系统的开发;②掌握边缘提取、抗差拟合、3D点云处理等核心技术的具体实现方法;③了解工业部署中的关键技术,如GPU加速、EtherCAT同步控制、实时数据看板等;④探索基于深度学习和量子计算的前沿技术在工业视觉中的应用。 其他说明:本文不仅提供了详细的理论分析和技术实现,还附有完整的代码示例和实验数据,帮助读者更好地理解和实践。同时,文中提到的硬件选型、校准方法、精度验证等内容,为实际项目实施提供了重要参考。文章最后还给出了未来的技术演进方向和开发者行动建议,如量子-经典混合计算、自监督学习等,以及参与HALCON官方认证和开源社区的建议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值