idol!! 2023牛客暑期多校训练营6 C

登录—专业IT笔试面试备考平台_牛客网

题目大意:·定义n!!等于与n的奇偶性相同的所有小于等于n的数的阶乘之和,问n!!的末尾有多少0

1<=n<=1e18

思路:因为末尾0的来源是2*5,而2的个数明显比5的个数多得多,所以末尾0的个数就等于有多少个5相乘。

首先我们看所有奇数,在n的范围内有cnt1=(n+1)/2个奇数,然后我们观察发现,除了前两个奇数1,3之外,后面每5个数他们的因数中间包含的5的个数是相同的,比如5~13每个奇数都有一个因数5,15~23有两个,而25~33有4个35~43有5个,前两组和后两组5的个数都相差1,而两者之间相差2,这是因为25不仅有因数5,还有因数25额外提供了一个5,那么如果我们先不管额外提供的这个5,那么每一组5的个数都是等差数列,一共有cnt2=(cnt-1)/5组,每组大小s为5,那么总合也就是(1+cnt2)*s*cnt2/2。

然后所有数对应减去他们本次提供的贡献后,可以发现前两组数剩余5的个数都变成了0,下一组变成了25~73的个数为1,75~123的个数为2,125~173的个数为4,也就是新的等差数列的每组大小变成了a*5,其余都不变,所以我们可以从5开始枚举a,直到所有数的贡献都被计算完毕。

对于偶数,唯一的不同就是一开始前四个数的贡献为0,每次求等差数列后,前四组的贡献清零,分两次求奇偶再加起来就好

//#include<__msvc_all_public_headers.hpp>
#include<bits/stdc++.h>
using namespace std;
typedef __int128 ll;//答案超过了long long 的数据范围
ll read()
{//直接在函数里面实现读字符串操作更简洁ll res = 0;//初始结果赋值0char scan[1005];scanf("%s", scan);for (int i = 0; i < strlen(scan); i++)res *= 10, res += scan[i] - '0';//实现进位return res;//返回__int128类型
}
void print(ll num)
{//递归调用,实现从高位向低位输出if (num > 9)print(num / 10);putchar(num % 10 + '0');
}
int main()
{ll n = read();ll a = 1;ll ans = 0;ll cnt1 = (n + 1) / 2;//奇数的个数while (cnt1>0){a *= 5;//每组大小ll cnt2 = (cnt1 - 2) / a;//组数ll sum1 = (1 + cnt2) * a * cnt2 / 2;//求等差数列和ll mod = (cnt1 - 2) % a;//不在组里的余数sum1 += (cnt2 + 1) * mod;//单独算一下余数ans += sum1;cnt1 -= 2 * a;//维护剩余有攻陷的数的个数}if (ans < 0){//特判cnt=1print(0);return 0;}a = 1;cnt1 = n / 2;//偶数的的个数while (cnt1>0){a *= 5;ll cnt2 = (cnt1 - 4) / a;//前四组贡献为0ll sum1 = (1 + cnt2) * a * cnt2 / 2;ll mod = (cnt1 - 4) % a;sum1 += (cnt2 + 1) * mod;ans += sum1;cnt1 -= 4 * a;}if (ans < 0){//特判cnt1=1,2,3print(0);return 0;}print(ans);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/27330.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git仓库大文件导致仓库体积增大处理

一、删除大文件 git filter-branch --tree-filter rm -rf path/to/large/file --prune-empty HEAD二、提交到远程 git push -f origin main PS&#xff1a;-f必须参数&#xff0c;强制刷新PS&#xff1a;git设计是为了存储代码&#xff0c;一般不将大文件上传到仓库

HarmonyOS元服务开发实践:桌面卡片字典

一、项目说明 1.DEMO创意为卡片字典。 2.不同卡片显示不同内容&#xff1a;微卡、小卡、中卡、大卡&#xff0c;根据不同卡片特征显示同一个字的不同内容&#xff0c;基于用户习惯可选择喜欢的卡片。 3.万能卡片刷新&#xff1a;用户点击卡片刷新按钮查看新内容&#xff0c;同时…

车载以太网SOME/IP的个人总结

如何实现CAN-SOME/IP通信路由测试 (qq.com) AutoSAR SOMEIP与SOC vsomeip通讯 (qq.com) 利用commonAPI和vSomeip对数据进行序列化 (qq.com) Vector - CANoe - VCDL与SomeIP (qq.com) 使用Wireshark 查看SOMEIP的方法 (qq.com) 基于AutoSAR的车载以太网测试 - SOMEIP之ECU做…

Java课题笔记~ AspectJ 的开发环境(掌握)

AspectJ 的开发环境(掌握) &#xff08;1&#xff09; maven 依赖 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></depe…

深度学习和OpenCV的对象检测(MobileNet SSD图像识别)

基于深度学习的对象检测时,我们主要分享以下三种主要的对象检测方法: Faster R-CNN(后期会来学习分享)你只看一次(YOLO,最新版本YOLO3,后期我们会分享)单发探测器(SSD,本节介绍,若你的电脑配置比较低,此方法比较适合R-CNN是使用深度学习进行物体检测的训练模型; 然而,…

docker compose快速编排

Docker-compose概述 Docker-Compose项目是Docker官方的开源项目&#xff0c;负责实现对Docker容集群的快速编排 Docker-Compose将所管理的容器分为三层&#xff0c;分别是工程&#xff08;project&#xff09;&#xff0c;服务&#xff08;service&#xff09;以及容器&#x…

项目实战 — 消息队列(4){消息持久化}

目录 一、消息存储格式设计 &#x1f345; 1、queue_data.txt&#xff1a;保存消息的内容 &#x1f345; 2、queue_stat.txt&#xff1a;保存消息的统计信息 二、消息序列化 三、自定义异常类 四、创建MessageFileManger类 &#x1f345; 1、约定消息文件所在的目录和文件名…

探索CSS计数器:优雅管理网页元素的计数与序号

113. 探索CSS计数器&#xff1a;优雅管理网页元素的计数与序号 在前端开发中&#xff0c;我们经常需要对网页元素进行计数与序号&#xff0c;如有序列表、表格行号、步骤指示等。为了优雅地管理这些计数与序号&#xff0c;CSS提供了一种强大的功能&#xff1a;CSS计数器&#…

1759. 统计同质子字符串的数目(java)

统计同质子字符串的数目 统计同质子字符串的数目题目描述双指针解题代码演示 回溯算法 统计同质子字符串的数目 难度 - 中等 1759. 统计同质子字符串的数目 题目描述 给你一个字符串 s &#xff0c;返回 s 中 同质子字符串 的数目。由于答案可能很大&#xff0c;只需返回对 109…

掌握 JVM 调优命令

常用命令 1、jps查看当前 java 进程2、jinfo实时查看和调整 JVM 配置参数3、jstat查看虚拟机统计信息4、jstack查看线程堆栈信息5、jmap查看堆内存的快照信息 JVM 日常调优总结起来就是&#xff1a;首先通过 jps 命令查看当前进程&#xff0c;然后根据 pid 通过 jinfo 命令查看…

MemFire教程|FastAPI+MemFire Cloud+LangChain开发ChatGPT应用-Part2

基本介绍 上篇文章我们讲解了使用FastAPIMemFire CloudLangChain进行GPT知识库开发的基本原理和关键路径的代码实现。目前完整的实现代码已经上传到了github&#xff0c;感兴趣的可以自己玩一下&#xff1a; https://github.com/MemFire-Cloud/memfirecloud-qa 目前代码主要…

ffmpeg源码编译成功,但是引用生成的静态库(.a)报错,报错位置在xxx_list.c,报错信息为某变量未定义

背景&#xff1a;本文是对上一个文章的补充&#xff0c;在源码编译之前&#xff0c;项目是有完整的ffmpeg编译脚本的&#xff0c;只不过新增了断点调试ffmpeg&#xff0c;所以产生的上面的文章&#xff0c;也就是说&#xff0c;我在用make编译成功后&#xff0c;再去做的源码编…

Jenkins+Nginx+vue

安装nodejs 在这里插入图片描述 echo off xcopy C:\ProgramData\Jenkins\.jenkins\workspace\super_manage_vue\dist F:\java\www\super_manage_vue\ /s /e /y echo 复制文件完成 exit安装niginx 配置文件如下 #user nobody; worker_processes 1;#error_log logs/error.lo…

4、长度最小的子数组

找到一个数组中&#xff0c;有多少个连续元素的和小于某个值&#xff0c;求出连续元素的长度的最小值。 滑动窗口法&#xff1a; 其本质也是快慢指针&#xff0c;一个指针指向窗口的起始位置&#xff0c;另一个指针指向窗口的终止位置。 1.定义快慢指针&#xff1a; 2.更新慢指…

排序算法(二)

1.希尔排序-Shell Sort 1.算法原理 将未排序序列按照增量gap的不同分割为若干个子序列&#xff0c;然后分别进行插入排序&#xff0c;得到若干组排好序的序列&#xff1b; 缩小增量gap&#xff0c;并对分割为的子序列进行插入排序&#xff1b;最后一次的gap1&#xff0c;即整个…

【Linux操作系统】GCC编译与静态库、动态库制作详解

GCC是一款广泛使用的开源编译器&#xff0c;它支持多种编程语言&#xff0c;并且具有强大的编译能力。在软件开发中&#xff0c;我们经常需要将代码编译成可执行文件或者库文件。本文将详细介绍GCC编译过程以及如何制作静态库和动态库。 文章目录 一、GCC编译过程1. 预处理阶段…

打破传统直播,最新数字化升级3DVR全景直播

导语&#xff1a; 近年来&#xff0c;随着科技的不断创新和发展&#xff0c;传媒领域也正经历着一场前所未有的变革。在这个数字化时代&#xff0c;直播已经不再仅仅是在屏幕上看到一些人的视频&#xff0c;而是将观众带入一个真实世界的全新体验。其中&#xff0c;3DVR全景直…

架构训练营学习笔记:6-1 微服务

序 这部分是了解的。传统企业使用soa较多。很多企业银行、电信对于Oracle 依赖大&#xff0c;强调稳定性。各个项目侧重外包&#xff0c;技术栈不统一。 soa 历史 这个之前电信的BOSS系统就是这种架构&#xff0c;不知道现在呢&#xff0c;核心计费系统billing是运行在tuxduo…

QT中类型转换

文章目录 前言一、QString与std::string二、QString与int三、QString与double四、QString与char*五、大小端转换 前言 本文涉及QString转int、QString转std::string、QString转double、QString转char*及大小端转换 一、QString与std::string QString qstr "你好&#x…

浅谈 Python中if __name__ == ‘__main__‘:的工作原理

为了理解if __name__ __main__:的工作原理&#xff0c;我们需要先了解Python中的特殊变量__name__。 每个Python模块都有一个内置的变量__name__。这个变量的值取决于如何执行模块&#xff1a; 如果模块是被直接运行的&#xff08;例如&#xff0c;你使用命令python myscrip…