[SPOJ]DIVCNTK - Counting Divisors[数论]

本文深入探讨了杜教筛算法及其在处理特定数学问题时的应用,特别是当涉及到大数运算和复杂度优化时。通过具体实例,讲解了如何使用min_25优化技巧来简化算法实现,降低计算复杂度,适用于解决高精度计算问题,如求解约数个数函数的累加值。

题目地址

  • 题目大意:

给定 n , k n,k n,k,求下面式子的值(对 2 64 2^{64} 264取模)

∑ i = 1 n σ 0 ( i k ) \sum_{i=1}^n\sigma_{0}(i^k) i=1nσ0(ik)

其中 σ 0 \sigma_{0} σ0是约数个数函数。

n , k ≤ 1 0 10 n,k\leq 10^{10} n,k1010


这个似乎可以用杜教筛之类的,但是比较麻烦,复杂度比较高,但如果用 m i n _ 25 min\_25 min_25就比较容易了。

我们只用考虑对于质数时的取值:

σ 0 ( p k ) = k + 1 \sigma_0(p^k)=k+1 σ0(pk)=k+1

然后直接套min_25的式子就好啦!

#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll unsigned long long
using namespace std;
const int M=2e6+10;
ll cnt,ID,n,sq,K;
ll idx(ll a){return a<=sq?a:ID-(n/a)+1;}
ll A[M],prime[M],g[M];
ll S(ll a,ll b){
	if(a<prime[b]) return 0;
	ll ans=g[idx(a)]-(K+1ll)*(b-1ll);
	for(ll i=b;i<=cnt&&prime[i]*prime[i]<=a;i++){
		for(ll j=prime[i],k=K+1ll;j*prime[i]<=a;j*=prime[i],k+=K){
			ans+=S(a/j,i+1)*k+(k+K);
		}
	}
	return ans;
}
int T;
int main(){
	for(scanf("%d",&T);T--;){
		scanf("%llu%llu",&n,&K);
		if(n==1){puts("1");continue;}
		sq=(ll)sqrt(n);ID=cnt=0;
		for(ll i=1;i<=n;i=A[ID]+1){
			A[++ID]=n/(n/i);
			g[ID]=(K+1ll)*(A[ID]-1ll);
		}
		for(ll i=2;i<=sq;i++)if(g[i]!=g[i-1]){
			prime[++cnt]=i;
			for(ll j=ID,down=i*i;A[j]>=down;j--){
				g[j]-=g[idx(A[j]/i)]-(K+1ll)*(cnt-1ll);
			}
		}
		printf("%llu\n",S(n,1)+1ll);
	}
	return 0;
}
当前,全球经济格局深刻调整,数字化浪潮席卷各行各业,智能物流作为现代物流发展的必然趋势和关键支撑,正迎来前所未有的发展机遇。以人工智能、物联网、大数据、云计算、区块链等前沿信息技术的快速迭代与深度融合为驱动,智能物流不再是传统物流的简单技术叠加,而是正在经历一场从自动化向智能化、从被动响应向主动预测、从信息孤岛向全面互联的深刻变革。展望2025年,智能物流系统将不再局限于提升效率、降低成本的基本目标,而是要构建一个感知更全面、决策更精准、执行更高效、协同更顺畅的智慧运行体系。这要求我们必须超越传统思维定式,以系统化、前瞻性的视角,全面规划和实施智能物流系统的建设。本实施方案正是基于对行业发展趋势的深刻洞察和对未来需求的精准把握而制定。我们的核心目标在于:通过构建一个集成了先进感知技术、大数据分析引擎、智能决策算法和高效协同平台的综合智能物流系统,实现物流全链路的可视化、透明化和智能化管理。这不仅是技术层面的革新,更是管理模式和服务能力的全面提升。本方案旨在明确系统建设的战略方向、关键任务、技术路径和实施步骤,确保通过系统化部署,有效应对日益复杂的供应链环境,提升整体物流韧性,优化资源配置效率,降低运营成本,并最终为客户创造更卓越的价值体验。我们致力于通过本方案的实施,引领智能物流迈向更高水平,为构建现代化经济体系、推动高质量发展提供强有力的物流保障。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VictoryCzt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值