海南网站建设泸州网站建设

苏州梓琰金属制品有限公司 2026/09/09 20:06:48

题目描述

一位科学家正在尝试制造一种非常大的晶体,具体来说是一种大的碳晶体。他认为,既然钻石是碳的晶体并且非常珍贵,那么从长远来看,他的新碳晶体也会像钻石一样珍贵。他晶体中的原子无法自然结合在一起,因此他希望在晶体中心施加一个强大的力,吸引所有碳原子并使它们保持在一起。

钻石晶体中的碳原子可以看作是放置在一个立方体中。科学家也希望将他的晶体碳原子放置在一个N×N×NN imes N imes NN×N×N的立方体中,其中NNN为偶数。如果该立方体的中心是(0,0,0)(0, 0, 0)(0,0,0)且所有边均平行于xyxyxyyzyzyzxzxzxz平面,则所有原子都将放置在三维整数坐标上。因此,如果(x,y,z)(x, y, z)(x,y,z)N×N×NN imes N imes NN×N×N立方体中某个原子的坐标,则xxxyyyzzz为整数且满足(−N/2≤x,y,z≤N/2)(-N/2 le x, y, z le N/2)(N/2x,y,zN/2)。由于中心的强大引力会吸引所有原子,因此原子的放置方式需确保没有任何原子位于中心和另一个原子之间。例如,如果坐标(2,2,2)(2, 2, 2)(2,2,2)处有一个原子,则不应在坐标(1,1,1)(1, 1, 1)(1,1,1)处放置原子,因为(1,1,1)(1, 1, 1)(1,1,1)处的原子会阻挡(2,2,2)(2, 2, 2)(2,2,2)与中心之间的引力。同样地,如果(1,1,1)(1, 1, 1)(1,1,1)处有原子,则(2,2,2)(2, 2, 2)(2,2,2)处不应有原子。

给定要制造晶体的立方体尺寸(边长),你的任务是找出在上述约束下可以放置的最大原子数。

输入格式

输入文件最多包含303030行。每行包含一个偶数整数NNN0<N≤2000000 < N le 2000000<N200000),表示科学家计划放置原子的立方体的边长。输入以一行NNN的值为000结束。

输出格式

对于除最后一行外的每一行输入,输出一行。该行应包含输出序号(格式为Crystal i:)和一个整数,表示可以放置的最大原子数。

样例输入

4 2 0

样例输出

Crystal 1: 98 Crystal 2: 26

数学基础:莫比乌斯函数与莫比乌斯反演

一、莫比乌斯函数

莫比乌斯函数μ(n)mu(n)μ(n)是定义在正整数上的函数:

μ(n)={1如果 n=1(−1)k如果 n 是 k 个不同质数的乘积0如果 n 被一个质数的平方整除 mu(n) = egin{cases} 1 & ext{如果 } n = 1 \ (-1)^k & ext{如果 } n ext{ 是 } k ext{ 个不同质数的乘积} \ 0 & ext{如果 } n ext{ 被一个质数的平方整除} end{cases}μ(n)=1(1)k0如果n=1如果nk个不同质数的乘积如果n被一个质数的平方整除

重要性质

  1. 积性函数:如果gcd⁡(a,b)=1gcd(a, b) = 1gcd(a,b)=1,则μ(ab)=μ(a)μ(b)mu(ab) = mu(a)mu(b)μ(ab)=μ(a)μ(b)
  2. 求和性质
    ∑d∣nμ(d)={1如果 n=10如果 n>1 sum_{d mid n} mu(d) = egin{cases} 1 & ext{如果 } n = 1 \ 0 & ext{如果 } n > 1 end{cases}dnμ(d)={10如果n=1如果n>1

二、莫比乌斯反演

f(n)f(n)f(n)g(n)g(n)g(n)是定义在正整数上的两个函数。

第一形式(约数和形式):
如果f(n)=∑d∣ng(d)f(n) = sum_{d mid n} g(d)f(n)=dng(d),那么g(n)=∑d∣nμ(d)f(nd)g(n) = sum_{d mid n} mu(d) fleft(frac{n}{d} ight)g(n)=dnμ(d)f(dn)

第二形式(倍数和形式):
如果f(n)=∑n∣dg(d)f(n) = sum_{n mid d} g(d)f(n)=ndg(d),那么g(n)=∑n∣dμ(dn)f(d)g(n) = sum_{n mid d} muleft(frac{d}{n} ight) f(d)g(n)=ndμ(nd)f(d)

莫比乌斯反演可以看作是"容斥原理"的数论形式。当我们知道一个"包含所有因子"的函数f(n)f(n)f(n)时,可以用莫比乌斯函数"筛出"我们真正关心的函数g(n)g(n)g(n)


题目分析与解题思路

1. 问题转化

题目要求在一个边长为偶数NNN的立方体网格中放置尽可能多的点(原子),使得从原点(0,0,0)(0,0,0)(0,0,0)(即立方体中心)到任意一个被放置的点的线段上,没有其他被放置的点(整数点)存在。

换句话说,所有被放置的点必须是从原点可见的,即从原点到该点的线段上不存在其他整数点(除了端点)。

在三维整数网格中,一个点(x,y,z)(x, y, z)(x,y,z)从原点可见的充要条件是:
gcd⁡(∣x∣,∣y∣,∣z∣)=1 gcd(|x|, |y|, |z|) = 1gcd(x,y,z)=1
理由:如果gcd⁡(∣x∣,∣y∣,∣z∣)=d>1gcd(|x|,|y|,|z|) = d > 1gcd(x,y,z)=d>1,那么点(xd,yd,zd)(frac{x}{d}, frac{y}{d}, frac{z}{d})(dx,dy,dz)也在该线段上,并且更靠近原点,从而原点与该点之间存在其他整数点,违反了规则。

因此,我们的目标是:在坐标范围[−M,M][-M, M][M,M]内(其中M=N/2M = N/2M=N/2),统计所有满足gcd⁡(∣x∣,∣y∣,∣z∣)=1gcd(|x|,|y|,|z|) = 1gcd(x,y,z)=1的整数点(x,y,z)(x, y, z)(x,y,z)的数量。注意,原点(0,0,0)(0,0,0)(0,0,0)gcd⁡gcdgcd定义为000,我们需要排除原点。

2. 数学建模与推导

M=N/2M = N/2M=N/2,坐标范围[−M,M][-M, M][M,M]。我们定义:

  • g(d)g(d)g(d)= 满足gcd⁡(∣x∣,∣y∣,∣z∣)=dgcd(|x|,|y|,|z|) = dgcd(x,y,z)=d的点数(d≥1d ge 1d1
  • f(d)f(d)f(d)= 满足d∣gcd⁡(∣x∣,∣y∣,∣z∣)d mid gcd(|x|,|y|,|z|)dgcd(x,y,z)的点数(即三个坐标都是ddd的倍数)

显然有:
f(d)=∑k≥1g(k⋅d) f(d) = sum_{k ge 1} g(k cdot d)f(d)=k1g(kd)
这是因为如果gcd⁡gcdgcdddd的倍数,那么它可以是d,2d,3d,…d, 2d, 3d, dotsd,2d,3d,

使用第二形式的莫比乌斯反演,令n=1n = 1n=1
g(1)=∑d≥1μ(d)f(d) g(1) = sum_{d ge 1} mu(d) f(d)g(1)=d1μ(d)f(d)
这里g(1)g(1)g(1)就是我们需要的可见点数(gcd⁡=1gcd = 1gcd=1)。

3. 计算f(d)f(d)f(d)

对于给定的dddf(d)f(d)f(d)是三个坐标都是ddd的倍数的点数。

在范围[−M,M][-M, M][M,M]中,xxxddd的倍数的值有:

  • 000
  • ±d,±2d,…,±kdpm d, pm 2d, dots, pm kd±d,±2d,,±kd,其中k=⌊M/d⌋k = lfloor M/d floork=M/d

所以每个坐标有2k+12k + 12k+1个可能值。三个坐标独立,总共有(2k+1)3(2k + 1)^3(2k+1)3种组合。

但原点(0,0,0)(0,0,0)(0,0,0)gcd⁡gcdgcd000,不属于gcd⁡=d≥1gcd = d ge 1gcd=d1的情况,所以排除原点:
f(d)=(2⋅⌊M/d⌋+1)3−1 f(d) = (2 cdot lfloor M/d floor + 1)^3 - 1f(d)=(2M/d+1)31

4. 最终公式

f(d)f(d)f(d)代入反演公式,得到:
可见点数=∑d=1Mμ(d)⋅[(2⋅⌊M/d⌋+1)3−1] ext{可见点数} = sum_{d=1}^{M} mu(d) cdot left[ (2 cdot lfloor M/d floor + 1)^3 - 1 ight]可见点数=d=1Mμ(d)[(2M/d+1)31]

其中M=N/2M = N/2M=N/2

5. 验证样例

对于N=4N = 4N=4M=2M = 2M=2

  • d=1d = 1d=1μ(1)=1mu(1) = 1μ(1)=1⌊2/1⌋=2lfloor 2/1 floor = 22/1=2(2⋅2+1)3−1=53−1=124(2 cdot 2 + 1)^3 - 1 = 5^3 - 1 = 124(22+1)31=531=124
  • d=2d = 2d=2μ(2)=−1mu(2) = -1μ(2)=1⌊2/2⌋=1lfloor 2/2 floor = 12/2=1(2⋅1+1)3−1=33−1=26(2 cdot 1 + 1)^3 - 1 = 3^3 - 1 = 26(21+1)31=331=26
  • d=3d = 3d=3μ(3)=−1mu(3) = -1μ(3)=1⌊2/3⌋=0lfloor 2/3 floor = 02/3=0(2⋅0+1)3−1=0(2 cdot 0 + 1)^3 - 1 = 0(20+1)31=0
  • d=4d = 4d=4μ(4)=0mu(4) = 0μ(4)=0⌊2/4⌋=0lfloor 2/4 floor = 02/4=0(2⋅0+1)3−1=0(2 cdot 0 + 1)^3 - 1 = 0(20+1)31=0

总和:124−26=98124 - 26 = 9812426=98,与样例输出一致。

对于N=2N = 2N=2M=1M = 1M=1

  • d=1d = 1d=1μ(1)=1mu(1) = 1μ(1)=1⌊1/1⌋=1lfloor 1/1 floor = 11/1=1(2⋅1+1)3−1=33−1=26(2 cdot 1 + 1)^3 - 1 = 3^3 - 1 = 26(21+1)31=331=26
  • d=2d = 2d=2μ(2)=−1mu(2) = -1μ(2)=1⌊1/2⌋=0lfloor 1/2 floor = 01/2=0(2⋅0+1)3−1=0(2 cdot 0 + 1)^3 - 1 = 0(20+1)31=0

总和:262626,与样例输出一致。


算法设计与实现

1. 算法步骤

  1. 预处理莫比乌斯函数:使用线性筛法计算μ(1)mu(1)μ(1)μ(Mmax⁡)mu(M_{max})μ(Mmax),其中Mmax⁡=100000M_{max} = 100000Mmax=100000(因为N≤200000N le 200000N200000,所以M≤100000M le 100000M100000)。
  2. 处理每个查询
    • 读入NNN(偶数),计算M=N/2M = N/2M=N/2
    • 初始化答案ans=0ans = 0ans=0
    • ddd111MMM循环,累加μ(d)⋅[(2⋅⌊M/d⌋+1)3−1]mu(d) cdot left[ (2 cdot lfloor M/d floor + 1)^3 - 1 ight]μ(d)[(2M/d+1)31]
    • 输出Crystal i: ans

2. 时间复杂度分析

  • 预处理莫比乌斯函数:O(Mmax⁡)O(M_{max})O(Mmax),其中Mmax⁡=100000M_{max} = 100000Mmax=100000
  • 每个查询:O(M)O(M)O(M),其中M≤100000M le 100000M100000
  • 总操作数:最多303030个查询,约3×1063 imes 10^63×106次运算,在合理范围内。

3. 空间复杂度分析

需要存储莫比乌斯函数数组,大小为O(Mmax⁡)O(M_{max})O(Mmax),即100001100001100001个整数,空间充足。


代码实现

// Make a Crystal// UVa ID: 11014// Verdict: Accepted// Submission Date: 2025-12-17// UVa Run Time: 0.000s//// 版权所有(C)2025,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;constintMAXM=100000;intmu[MAXM+5];boolisPrime[MAXM+5];vector<int>primes;// 预处理莫比乌斯函数:使用线性筛法voidsieve(){fill(isPrime,isPrime+MAXM+1,true);mu[1]=1;for(inti=2;i<=MAXM;++i){if(isPrime[i]){primes.push_back(i);mu[i]=-1;// 质数的莫比乌斯函数值为 -1}for(intp:primes){if(i*p>MAXM)break;isPrime[i*p]=false;if(i%p==0){mu[i*p]=0;// 有平方因子break;}else{mu[i*p]=-mu[i];// 积性函数性质}}}}intmain(){sieve();intcaseNo=1;intN;while(scanf("%d",&N)==1&&N!=0){LL M=N/2;LL ans=0;for(LL d=1;d<=M;++d){LL t=M/d;// floor(M/d)LL term=(2*t+1);term=term*term*term-1;// (2t+1)^3 - 1ans+=mu[d]*term;}printf("Crystal %d: %lld
",caseNo++,ans);}return0;}

代码说明

  1. 线性筛法计算莫比乌斯函数

    • 初始化所有数为质数,μ(1)=1mu(1) = 1μ(1)=1
    • 遍历iii222MAXMMAXMMAXM
      • 如果iii是质数,加入质数表,μ(i)=−1mu(i) = -1μ(i)=1
      • 用当前质数表筛去合数i×pi imes pi×p
        • 如果iii能被ppp整除,则i×pi imes pi×p有平方因子,μ(i×p)=0mu(i imes p) = 0μ(i×p)=0
        • 否则,μ(i×p)=−μ(i)mu(i imes p) = -mu(i)μ(i×p)=μ(i)(积性函数性质)。
  2. 主循环

    • 读取每个NNN,直到N=0N = 0N=0结束。
    • 计算M=N/2M = N/2M=N/2
    • ddd111MMM累加贡献。
    • 输出结果,注意使用%lld格式输出long long类型。
  3. 注意事项

    • 使用long long类型存储中间结果和答案,避免溢出。
    • ddd循环上界为MMM,因为当d>Md > Md>M时,⌊M/d⌋=0lfloor M/d floor = 0M/d=0,贡献为000

算法优化思考

虽然当前算法已经可以通过题目测试,但还可以进一步优化:

  1. 整除分块优化:计算∑d=1Mμ(d)⋅[(2⋅⌊M/d⌋+1)3−1]sum_{d=1}^{M} mu(d) cdot left[ (2 cdot lfloor M/d floor + 1)^3 - 1 ight]d=1Mμ(d)[(2M/d+1)31]时,⌊M/d⌋lfloor M/d floorM/d的值在连续区间内相同,可以使用整除分块将复杂度从O(M)O(M)O(M)降为O(M)O(sqrt{M})O(M)

  2. 预处理前缀和:可以预处理莫比乌斯函数的前缀和,结合整除分块进一步优化。

  3. 记忆化:对于重复的MMM值,可以缓存计算结果。

但对于本题M≤100000M le 100000M100000且最多303030个查询的情况,当前O(M)O(M)O(M)算法已经足够高效。


总结

本题的核心在于将几何约束转化为数论条件:从原点可见的点等价于gcd⁡(∣x∣,∣y∣,∣z∣)=1gcd(|x|,|y|,|z|) = 1gcd(x,y,z)=1。通过引入莫比乌斯函数和莫比乌斯反演,我们避免了复杂的容斥计数,得到了简洁高效的数学公式。算法实现主要分为两部分:

  1. 预处理莫比乌斯函数(线性筛法)
  2. 对每个查询计算和式

掌握莫比乌斯反演这一工具,对于解决类似的数论计数问题非常有帮助,它能够将复杂的容斥过程转化为简洁的数学表达式,是算法竞赛中处理gcd⁡gcdgcd相关计数问题的利器。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

网站建设哪家公司好广西网站建设

快速体验打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容:开发一个基于AI的Spring应用漏洞扫描工具,重点检测CVE

2026/06/30 11:11:24

苏州网站建设长沙网站建设

导语:多模态大模型领域再迎技术突破,LLaVA-One-Vision团队宣布其1.5版本85M参数量模型(LLaVA-One-Vision-1.5-Mid-T

2026/06/30 11:54:58

兰州网站建设宁波市网站建设

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图同行可

2026/06/30 12:10:59

寿光网站建设黑龙江网站建设

如何快速部署语音AI模型:从零开始的完整本地化实战指南【免费下载链接】Step-Audio-Tokenizer项目地址: https://ai.gitcode.com/StepFun/S

2026/06/30 13:08:34

晋江网站建设随州网站建设

在学术研究的数字化时代,Jasminum作为专为中文文献设计的Zotero插件,彻底改变了传统文献管理的方式。这款免费工具通过智能化技术解决了知网文献元数据获取和PDF附件

2026/06/30 13:48:07

网站建设中建设网站教程

企业级AI定制服务新思路:基于lora-scripts构建私有化模型在品牌竞争日益激烈的今天,一家设计公司接到了一个紧急需求:为某科技客户打造一套“赛博朋克&

2026/06/30 10:48:22

黄石网站建设大庆网站建设

深入实践 I/O、重定向、管道和过滤器在命令行操作中,I/O、重定向、管道和过滤器是非常实用的工具。它们可以帮助我们更高效地处理数据、管理文件和监控系统。下面将详细介绍这些工具的使用方法和应用场景。1

2026/06/30 11:08:54

网站建设收费网站建设基础知识

突破效率瓶颈:微服务架构自动化部署全链路指南【免费下载链接】ComfyUI最强大且模块化的具有图形/节点界面的稳定扩散GUI。项目地址: https://gitcode.com/GitH

2026/06/30 12:12:59

免费网站建设南充网站建设

婚纱摄影网站目录基于ssm + vue婚纱摄影网站系统一、前言二、系统功能演示三、技术选型四、其他项目参考五、代码参考六、测试参考七、最新计算机毕设选题推荐八、源码获取:基于ss

2026/06/30 13:11:04