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

杭州西籽网络科技有限公司 2026/09/09 17:50:54

题目描述

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

钻石晶体中的碳原子可以看作是放置在一个立方体中。科学家也希望将他的晶体碳原子放置在一个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相关计数问题的利器。

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

房产网站建设住房城乡建设部网站

💡实话实说:CSDN上做毕设辅导的都是专业技术服务,大家都要生活,这个很正常。我和其他人不同的是,我有自己的项目库存࿰

2026/06/30 10:39:51

电器网站建设济南营销型网站建设

想象一下你正在看一部精彩的电影。好的导演会在同一时刻让你注意到:主角脸上的微妙表情背景音乐的紧张节奏远处逐渐逼近的危险台词中的双关含义你并不是只盯着一个地方看,而是同时关注

2026/06/30 12:47:03

网站建设系统建设网站制作

PF 网络配置与使用指南1. 关于网络构建与 PF 概述在网络构建中,防火墙及相关功能是关键环节。我们将从基础理论入手,结合过滤和网络流量引导的实例来探讨。这里假设你具备 TCP/IP 网络概念和 U

2026/06/30 12:20:00

塘沽网站建设太原网站建设

SacreBLEU终极指南:5分钟掌握机器翻译评估标准【免费下载链接】sacrebleuReference BLEU implementation that auto-downloads

2026/06/30 11:41:26

中国建设部网站网站规划与建设

快速体验打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容:开发一个新手友好的服务器错误处理教学应用。功能包括:1.交互式

2026/06/30 12:28:31

电子商务网站建设学校网站建设

BBDown深度解析:从入门到精通的B站下载全攻略【免费下载链接】BBDownBilibili Downloader. 一款命令行式哔哩哔哩下载器.项目地址: https://gitco

2026/06/30 12:22:31

广州建设网站洛阳网站建设

LangFlow中的选举预测模型:民意调查数据整合在2024年全球多国进入选举周期的背景下,政治分析机构正面临一个共同挑战:如何快速、准确地整合来自数十家民调

2026/06/30 13:41:37

推广网站建设做网站建设

嘿,各位电脑玩家!是不是总觉得自己的Windows系统像一辆老爷车,启动慢、运行卡、还特别爱收集你的隐私?今天我要给你介绍一个能让你的系统脱胎换

2026/06/30 11:01:53

婚纱摄影网站建设吉林省建设厅网站

基于TensorFlow的医疗保险欺诈检测在医保系统每天处理成千上万笔理赔申请的现实场景中,如何快速、准确地识别出那些披着合法外衣的欺诈行为,已经成为保险公司和监管机构面临

2026/06/30 11:49:57

专业网站建设公司胶州网站建设

一、引言网络钓鱼攻击现状分析CNNIC公共互联网反网络钓鱼工作组简介“网络钓鱼攻防演练”的目标与意义dnstwist工具介绍及其在网络钓鱼防御中的作用二、准备工作安装环境准备操作系统要求Python版

2026/06/30 13:43:37