当前位置: 首页 > news >正文

题解 | #C.idol!!# 2023牛客暑期多校6

C.idol!!

数学

题目大意

正整数 n n n 的双阶乘 n ! ! n!! n!! 表示不超过 n n n 且与 n n n 有相同奇偶性的所有正整数乘积
求对于给定 n n n ∏ i = 1 n i ! ! \prod\limits_{i=1}^n i!! i=1ni!! 的后缀 0 0 0 个数

解题思路

根据双阶乘的性质,可以得到: ( n − 1 ) ! ! × n ! ! = n ! (n-1)!!\times n!!=n! (n1)!!×n!!=n!
因此对于给定的 n n n ,原式可化为:
∏ i = 1 n i ! ! = { ∏ i = 1 n 2 ( 2 i ) ! , n 为偶数 ∏ i = 1 n + 1 2 ( 2 i − 1 ) ! , n 为奇数 \prod\limits_{i=1}^n i!!=\begin{cases} \prod\limits_{i=1}^\frac{n}{2} (2i)! &,n为偶数 \\ \prod\limits_{i=1}^\frac{n+1}{2} (2i-1)! &,n为奇数 \end{cases} i=1ni!!= i=12n(2i)!i=12n+1(2i1)!,n为偶数,n为奇数
显而易见的,阶乘中因子 2 2 2 的个数一定多于因子 5 5 5 的个数,因此题目等价于求上式中因子 5 5 5 的个数//

考虑某单一阶乘 n ! n! n! 中所含因子 5 5 5 的个数。
可以发现,每个 5 5 5 的倍数项会提供 1 1 1 个因子 5 5 5 ,共有 ⌊ n 5 ⌋ \lfloor \dfrac{n}{5} \rfloor 5n
除此之外每个 25 = 5 2 25=5^2 25=52 的倍数项会额外提供一个因子 5 5 5 ,共有 ⌊ n 5 2 ⌋ \lfloor \dfrac{n}{5^2} \rfloor 52n
再除此之外每个 125 = 5 3 125=5^3 125=53 的倍数项会额外提供一个因子 5 5 5 ,共有 ⌊ n 5 3 ⌋ \lfloor \dfrac{n}{5^3} \rfloor 53n 项……
因此对于单一阶乘 n ! n! n! ,其提供因子 5 5 5 的数量 c n t 5 = ∑ i = 1 N ⌊ n 5 i ⌋ ( 5 N > n ) cnt_5=\sum\limits_{i=1}^N \lfloor \dfrac{n}{5^i} \rfloor (5^N>n) cnt5=i=1N5in(5N>n)

接着考虑连乘积中因子 5 5 5 个数的总和。
a n s = { ∑ i = 1 n 2 ∑ j = 1 N ⌊ 2 i 5 j ⌋ = ∑ i = 1 N ∑ j = 1 n 2 ⌊ 2 j 5 i ⌋ , n 为偶数 ∑ i = 1 n + 1 2 ∑ j = 1 N ⌊ 2 i − 1 5 j ⌋ = ∑ i = 1 N ∑ j = 1 n + 1 2 ⌊ 2 j − 1 5 i ⌋ , n 为奇数 ans=\begin{cases} \sum\limits_{i=1}^\frac{n}{2} \sum\limits_{j=1}^N \lfloor \dfrac{2i}{5^j} \rfloor=\sum\limits_{i=1}^N \sum\limits_{j=1}^\frac{n}{2} \lfloor \dfrac{2j}{5^i} \rfloor &,n为偶数 \\ \sum\limits_{i=1}^\frac{n+1}{2} \sum\limits_{j=1}^N \lfloor \dfrac{2i-1}{5^j} \rfloor=\sum\limits_{i=1}^N \sum\limits_{j=1}^\frac{n+1}{2} \lfloor \dfrac{2j-1}{5^i} \rfloor &,n为奇数 \end{cases} \\ ans= i=12nj=1N5j2i=i=1Nj=12n5i2ji=12n+1j=1N5j2i1=i=1Nj=12n+15i2j1,n为偶数,n为奇数

对于某一 i i i ,发现不论 n n n 的奇偶, j = 1 j=1 j=1 开始的每 5 i 5^i 5i 项之和构成公差为 2 × 5 i 2\times5^i 2×5i 的等差数列//
例: i = 1 i=1 i=1 n n n 为偶数且足够大时, ⌊ 2 j 5 i ⌋ \lfloor \dfrac{2j}{5^i} \rfloor 5i2j 的前 15 15 15 项如下,其中每 5 5 5 项之和构成公差为 5 × 2 5\times 2 5×2 的等差数列: 0 , 0 , 1 , 1 , 2 ∣ ∣ 2 , 2 , 3 , 3 , 4 ∣ ∣ 4 , 4 , 5 , 5 , 6 … … 0,0,1,1,2||2,2,3,3,4||4,4,5,5,6…… 0,0,1,1,2∣∣2,2,3,3,4∣∣4,4,5,5,6……

经计算,对于某一 i i i ,等差数列的首项为
a 1 = { ⌊ 5 i 2 ⌋ + 2 , n 为偶数 ⌊ 5 i 2 ⌋ + 1 , n 为奇数 a_1=\begin{cases} \lfloor \dfrac{5^i}{2} \rfloor+2 &,n为偶数 \\ \lfloor \dfrac{5^i}{2} \rfloor+1 &,n为奇数 \end{cases} a1= 25i+225i+1,n为偶数,n为奇数

完整的段用等差数列求和,非完整的段手算一下//

若此前完整段的数量记为 m m m ,则非完整段:
⌊ 5 i 2 ⌋ \lfloor \dfrac{5^i}{2} \rfloor 25i 项的值为 2 m 2m 2m
⌊ 5 i 2 ⌋ + 1 \lfloor \dfrac{5^i}{2} \rfloor+1 25i+1 至 $2\times\lfloor \dfrac{5^i}{2} \rfloor $ 项的值为 2 m + 1 2m+1 2m+1(手搓一下就知道了)

求和即可

N = ⌊ log ⁡ 5 n ⌋ + 1 N=\lfloor \log_5n \rfloor+1 N=log5n+1 ,对 i ∈ [ 1 , N ] i\in[1,N] i[1,N] 遍历求和得到答案

由于答案数据极其庞大,超出了C++ %lld(64bits)的范围,因此需要使用更高位数的整数类型(如int128)//或者直接转战Python

时间复杂度

O ( log ⁡ n ) O(\log n) O(logn)

参考代码

import math
# while 1:
n=int(input())
N=int(math.log(n,5)+1)
re=0
if n%2==0 :for i in range(1,N+1) :#print("i="+str(i))a1=(5**i)//2+2 #首项#print("a1="+str(a1))d=(5**i)*2 #公差#print("d="+str(d))m=(n//2)//(5**i) #完整段数#print("m="+str(m))re+=(2*a1+(m-1)*d)*m//2 #完整段等差数列求和#print("re1:" + str(re))re+=(n//2-m*(5**i))*2*m #最后一段余项求和#print("re2:" + str(re))#print("pl1=" + str((n//2-m*(5**i))*2*m))if n//2-m*(5**i)>(5**i)//2 :re+=n//2-m*(5**i)-(5**i)//2#print("pl2=" + str(n//2-m*(5**i)-(5**i)//2))if n%2 :for i in range(1,N+1) :#print("i="+str(i))a1=(5**i)//2+1 #首项#print("a1="+str(a1))d=(5**i)*2 #公差#print("d="+str(d))m=((n+1)//2)//(5**i) #完整段数#print("m="+str(m))re+=(2*a1+(m-1)*d)*m//2 #完整段等差数列求和#print("re1:" + str(re))re+=((n+1)//2-m*(5**i))*2*m #最后一段余项求和#print("re2:" + str(re)) #print("pl1=" + str(((n+1)//2-m*(5**i))*2*m))if (n+1)//2-m*(5**i)>(5**i)//2 :re+=(n+1)//2-m*(5**i)-(5**i)//2#print("pl2=" + str((n+1)//2-m*(5**i)-(5**i)//2))print(re)

相关文章:

题解 | #C.idol!!# 2023牛客暑期多校6

C.idol!! 数学 题目大意 正整数 n n n 的双阶乘 n ! ! n!! n!! 表示不超过 n n n 且与 n n n 有相同奇偶性的所有正整数乘积 求对于给定 n n n , ∏ i 1 n i ! ! \prod\limits_{i1}^n i!! i1∏n​i!! 的后缀 0 0 0 个数 解题思路 根据双阶乘的性质&…...

使用filebeat收集并解析springboot日志

序 本文主要研究一下如何使用filebeat收集并解析springboot日志 安装 在官网的下载页面filebeat/downloads提供了一些特定平台的安装包,不过对应linux最为省事的安装方式就是直接下载x86_64压缩包,然后解压即可 wget https://artifacts.elastic.co/d…...

P1993 小 K 的农场

小 K 的农场 题目描述 小 K 在 MC 里面建立很多很多的农场,总共 n n n 个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共 m m m 个),以下列三种形式描述:…...

Spring boot 集成 Skywalking 配置 || Skywalking 打不开【已解决】

一、Skywalking官网 Apache SkyWalking 1.下载Skywalking APM (如果下载最新的,双击打开闪退,选老点的版本) 2. 下载 Skywalking Agents 如果下载太慢,建议复制下载链接,然后用下载器下载,比…...

手把手教你使用 ftrace 对 Linux 系统进行 debug

1、简介 strace:用来跟踪 Linux 进程执行时的系统调用和接收所接收的信号,可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。 ftrace:是一个 Linux 内核函数跟踪器,function tracer,旨在帮助开发人员和系统设计者可以找到内核内部发生的事情,从 L…...

【练】要求定义一个全局变量 char buf[] = “1234567“,创建两个线程,不考虑退出条件,打印buf

要求定义一个全局变量 char buf[] "1234567",创建两个线程,不考虑退出条件,另: A线程循环打印buf字符串,B线程循环倒置buf字符串,即buf中本来存储1234567,倒置后buf中存储7654321. 不…...

iOS Viper架构(中文版)【看懂这篇就够了】

完整源码地址 一、iOS_Viper iOS的Viper架构,作为一个从业多年的iOS开发者,我个人认为应该要会一点viper 二、前言 viper的设计模式在iOS开发中不流行,甚至是Swift中,也没有用,我认为比较可惜。作为iOSer,当你掌握…...

深入理解缓存 TLB 原理

今天分享一篇TLB的好文章,希望大家夯实基本功,让我们一起深入理解计算机系统。 TLB 是 translation lookaside buffer 的简称。首先,我们知道 MMU 的作用是把虚拟地址转换成物理地址。 MMU工作原理 虚拟地址和物理地址的映射关系存储在页表…...

获取k8s scale资源对象的命令

kubectl get --raw /apis/<apiGroup>/<apiVersion>/namespaces/<namespaceName>/<resourceKind>/<resourceName>/scale 说明&#xff1a;scale资源对象用来水平扩展k8s资源对象的副本数&#xff0c;它是作为一种k8s资源对象的子资源存在&#xf…...

基于ChatYuan-large-v2 语言模型 Fine-tuning 微调训练 广告生成 任务

一、ChatYuan-large-v2 ChatYuan-large-v2是一个开源的支持中英双语的功能型对话语言大模型&#xff0c;与其他 LLM 不同的是模型十分轻量化&#xff0c;并且在轻量化的同时效果相对还不错&#xff0c;仅仅通过0.7B参数量就可以实现10B模型的基础效果&#xff0c;正是其如此的…...

SpringBoot集成Logback日志

SpringBoot集成Logback日志 文章目录 SpringBoot集成Logback日志一、什么是日志二、Logback简单介绍三、SpringBoot项目中使用Logback四、概念介绍一、日志记录器Logger1.1、日志记录器对象生成1.2、记录器的层级结构1.3、过滤器1.4、logger设置日志级别1.5、java代码演示1.6、…...

MATLAB(R2023a)添加工具箱TooLbox的方法-以GPOPS为例

一、找到工具箱存放位置 首先我们需要找到工具箱的存放位置&#xff0c;点击这个设置路径可以看到 我们的matlab工具箱的存放位置 C:\Program Files\MATLAB\R2023a\toolbox\matlab 从资源管理器中打开这个位置&#xff0c;可以看到里面各种工具箱 二、放入工具箱 解压我们…...

助力618-Y的混沌实践之路 | 京东云技术团队

一、写在前面 1、混沌是什么&#xff1f; 混沌工程&#xff08;Chaos Engineering&#xff09;的概念由 Netflix 在 2010 年提出&#xff0c;通过主动向系统中引入异常状态&#xff0c;并根据系统在各种压力下的行为表现确定优化策略&#xff0c;是保障系统稳定性的新型手段。…...

Python系统学习1-4-物理行、逻辑行、选择语句

一、行 (1) 物理行&#xff1a;程序员编写代码的行。 (2) 逻辑行&#xff1a;python解释器需要执行的指令。 (3) 建议&#xff1a; 一个逻辑行在一个物理行上。 如果一个物理行中使用多个逻辑行&#xff0c;需要使用分号&#xff1b;隔开。 (4) 换行&#xff1a; 如果…...

学习系统编程No.35【基于信号量的CP问题】

引言&#xff1a; 北京时间&#xff1a;2023/8/2/12:52&#xff0c;时间飞逝&#xff0c;恍惚间已经来到了八月&#xff0c;给我的第一感觉就是快开学了&#xff0c;别的感觉其实没有&#xff0c;哈哈&#xff01;看着身边的好友网络相关知识都要全部学完了&#xff0c;就好像…...

词嵌入、情感分类任务

目录 1.词嵌入&#xff08;word embedding&#xff09; 对单词使用one-hot编码的缺点是难以看出词与词之间的关系。 所以需要使用更加特征化的表示&#xff08;featurized representation&#xff09;&#xff0c;如下图所示&#xff0c;我们可以得到每个词的向量表达。 假设…...

TypeScript使用技巧

文章目录 使用技巧TypeScript内置的工具类型keyofextends 限定泛型interface 与 type 区别 TypeScript作为JavaScript的超集,通过提供静态类型系统和对ES6新特性的支持,使JavaScript开发变得更加高效和可维护。掌握TypeScript的使用技巧,可以帮助我们更好地开发和组织JavaScrip…...

MySQL — InnoDB事务

文章目录 事务定义事务特性事务隔离级别READ UNCOMMITTEDREPEATABLE READREAD COMMITTEDSERIALIZABLE 事务存在的问题脏读&#xff08;Dirty Read&#xff09;不可重复读&#xff08;Non-repeatable Read&#xff09;幻读&#xff08;Phantom Read&#xff09; 事务定义 数据库…...

LeetCode 42. 接雨水(动态规划 / 单调栈)

题目&#xff1a; 链接&#xff1a;LeetCode 42. 接雨水 难度&#xff1a;困难 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2…...

顺序表、链表刷题指南(力扣OJ)

目录 前言 题目一&#xff1a;删除有序数组中的重复项 思路&#xff1a; 题解&#xff1a; 题目二&#xff1a;合并两个有序数组 思路&#xff1a; 分析&#xff1a; 题解&#xff1a; 题目三&#xff1a;反转链表 思路&#xff1a; 分析&#xff1a; 题解&#xff1a; 题目四&…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...