【LeetCode】:面试题 16.05. 阶乘尾数

news2024/9/21 19:07:24

🎁个人主页:我们的五年

🔍系列专栏:C++课程学习

🎉欢迎大家点赞👍评论📝收藏⭐文章

 

好久没有写文章了,今天碰见了一道有趣的题目,写下来分享一下。

🏆1.问题描述:

 🏆2.问题分析:

🎲优化一:

首先看到这道题的时候,暴力肯定是不行的,n的阶乘可能会是一个很大的数,肯定是会超过int,long long的范围的。

然后再去想其他的方法优化,n的阶乘:1*2*3*……*n。两个数相乘,尾部要新增0,这两个数的最低位的非0必须是(2*5)(4*5)(6*5)(8*5),从这里面可以看出全部都有 5,而且其他的是2的倍数,其实最重要的还是2*5,其他的相乘不会新增0。

一个2和一个5相乘就会在尾部新增一个 0。所以我们计算 1到n之间有个2和5,然后取2和5的最小的个数,就是最后尾部的0的个数。

比如:4*5*5*5=2*2*5*5*5

这里面有2个为2的因子,3个为5的因子,所以一共有2对(2,5);最后尾部就有2个0。

🎲优化二:

如果根据上面的通过循环计算2和5的个数 ,这样的算法的时间复杂度肯定是要大于logn的,那就会发生时间超限。

然后我们必须在进行优化计算2和5的个数的算法。


我们先来看看不管n是多少,1~n之间,2的因子肯定是要>=5的因子。

所以我们最后只要计算有多少个5,尾部就有多少个0。


🎬1.每五个数中,就有一个是5的倍数。这些都包含一个以上为5的因子。

n/5=n1。

🎬2.但是25有2个5,在25也是5的倍数,计算过一次5,这里也只需要计算一个。

n/25=n2。

🎬125中有3个5,125是5的倍数5的倍数的时候计算过一次,125是25的倍数,在25的时候也计算过一次。最后也只需要计算一次就可以了。

n/125=n3

……

直到计算超过n

最后n1+n2+n3……就是5的个数。

🏆3.实现代码:

一:

class Solution {
public:
    int trailingZeroes(int n) {
        int num=0;
        while(n){
            num+=n/5;
            n/=5;
        }
        return num;
    }
};

二:

class Solution {
public:
    int trailingZeroes(int n) {
        int num=0;

        //最后面i*5的返回可能超过int
        long long i=5;
        for(;i<=n;i*=5)
        {
            num+=n/i;
        }
        return num;
    }
};

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

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

相关文章

智能新纪元:GPT-Next引领的AI革命及其跨领域应用

GPT-Next&#xff1a;性能的百倍提升 在当今这个科技日新月异的时代&#xff0c;人工智能&#xff08;AI&#xff09;无疑是最具活力和变革性的领域之一。最近&#xff0c;OpenAI在KDDI峰会上宣布了一项激动人心的消息&#xff1a;他们即将推出名为“GPT-Next”的新一代语言模…

【Matplotlib】利用Python进行绘图!(python数据分析与可视化)

文章开始前打个小广告——分享一份Python学习大礼包&#xff08;激活码安装包、Python web开发&#xff0c;Python爬虫&#xff0c;Python数据分析&#xff0c;人工智能、自动化办公等学习教程&#xff09;点击领取&#xff0c;100%免费&#xff01; 【Matplotlib】 教程&…

MySQL(CRUD)

MySQL mysql -u root -ply MySQL的三层结构 1.安装MySQL数据库本质就是在主机安装一个数据库管理系统(DBMS),这个管理程序可以管理多个数据库. 2.一个数据库中可以创建多个表,以保存数据 SQL语句分类 1.DDL:数据定义语句[create 表,库] 2.DML:数据操作语句[增加insert,修改…

【杂记】裂脑人实验和语言模型幻觉

【杂记】裂脑人实验和语言模型幻觉 模型的自主意识在哪里&#xff0c;人的自我认知在哪里&#xff1f;自然而然的&#xff0c;“裂脑人” 这个词突然出现在我脑海里。然后随意翻了翻相关的文章&#xff0c;觉得这个问题和目前大模型面临的幻觉问题也高度相关&#xff0c;遂随笔…

一图打尽C++内存分区(分段)

一图打尽C内存分区(分段) 直接上图&#xff1a; 栈区&#xff08;Stack Segment&#xff09;&#xff1a; 位于内存的高地址部分。用于存储函数调用时的局部变量、函数参数和返回地址。内存地址从高向低增长。 堆区&#xff08;Heap Segment&#xff09;&#xff1a; 位于栈区…

人工智能的12个不为人知的秘密

随着人工智能技术在各行业的应用越来越广泛&#xff0c;IT领导者需要了解如何采用人工智能技术收集商业见解的秘密。 人类一直梦想着有一个无所不知、无所不能的精灵为自己提供帮助。如今需要感谢计算机科学家的不断探索和努力&#xff0c;将在人工智能领域找到这个答案&#x…

HTMX:用HTML属性实现AJAX、CSS过渡和WebSockets

前言 在现代 Web 开发中&#xff0c;用户界面的交互性和响应性是至关重要的。 用户期望网站和应用程序能够即时响应他们的操作&#xff0c;提供流畅和直观的体验。 传统的 JavaScript 库虽然功能强大&#xff0c;但往往伴随着复杂的配置和庞大的文件大小&#xff0c;这可能会…

怎么做PPT?10个做PPT必备的实用技巧,附3款AI制作PPT软件推荐!

在视觉化表达成为主流的当下&#xff0c;对于商业演示、学术报告还是课堂教学等场景&#xff0c;一份精心准备的PPT&#xff0c;能让你的观点更具说服力&#xff0c;更容易被观众所接受。 但不可否认的是&#xff0c;对许多人来说&#xff0c;制作一份既专业又吸引人的PPT幻灯…

浅谈城市地铁智能照明系统的能耗分析及节能措施

0引言 中国近40年经济快速增长&#xff0c;面临快速城市化挑战。城市轨道交通成为发达国家主要交通方式。2016年&#xff0c;43个城市获建设许可&#xff0c;比2012年多8个。"十三五"期间&#xff0c;新建城市轨道交通5357公里&#xff0c;年均1071公里&#xff0c;…

第23周:使用Word2vec实现文本分类

目录 前言 一、数据预处理 1.1 加载数据 1.2 构建词典 1.3 生成数据批次和迭代器 二、模型构建 2.1 搭建模型 2.2 初始化模型 2.3 定义训练和评估函数 三、训练模型 3.1 拆分数据集并运行模型 3.2 测试指定数据 总结 前言 &#x1f368; 本文为[&#x1f517;365天…

贪吃蛇游戏:增加暂停按钮,每次增加10分蛇会变化

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>贪吃蛇游戏</title> </head> <st…

奇安信椒图--服务器安全管理系统(云锁)

奇安信椒图–服务器安全管理系统&#xff08;云锁&#xff09; 椒图 奇安信服务器安全管理系统是一款符合Gartner定义的CWPP&#xff08;云工作负载保护平台&#xff09;标准、EDR&#xff08;终端检测与响应&#xff09;、EPP终端保护平台&#xff08;终端保护平台&#xff…

山东济南最厉害的改名大师颜廷利:中国当代最伟大的哲学家之一

山东济南最厉害的改名大师颜廷利&#xff1a;中国当代最伟大的哲学家之一 颜廷利教授的哲学思想主要集中在《升命学说》中&#xff0c;强调奉献与无私奉献的重要性&#xff0c;认为金钱利益交易是现代社会的一个问题&#xff0c;并提出了一个理想的文明社会模型&#xff0c;其…

C++---由优先级队列认识仿函数

文章目录 一、优先级队列是什么&#xff1f; 二、如何使用优先级队列 1、优先级队列容器用法 2、为什么容器本身无序&#xff1f; 三、什么是仿函数&#xff1f; 1. 什么是仿函数&#xff1f; 2. 仿函数的优势 四、仿函数如何使用&#xff1f; 1、重载operator()函数 2、运用第…

分支管理

目录 创建分支 切换分支 合并分支 删除分支 合并冲突 创建分支 git branch [分支]指令 创建新的分⽀后&#xff0c;Git 新建了⼀个指针叫dev&#xff0c; * 表⽰当前 HEAD 指向的分⽀是 master 分⽀。另外&#xff0c;可以通过⽬录结构发现&#xff0c;新的 dev 分⽀…

s3c2440---ADC模数转换器

目录 一、模数转换器简述 1.1.简述 1.2.转换过程 ​编辑 1.3. ADC类别 二、普通ADC转换的实现 2.1.设置ADC控制寄存器 2.2. 读取ADC转换数据寄存器 三、总结 一、模数转换器简述 1.1.简述 S3c2440有一个10-bit的CMOS ADC 模数转换器&#xff0c;支持8个模拟通道输…

像素间的关系(邻接、连通、区域、边界、距离定义)

文章目录 像素的相邻像素4邻域D邻域8邻域 邻接、连通、区域和边界邻接类型连通区域边界 距离测度欧氏距离城市街区距离&#xff08;city-block distance&#xff09;棋盘距离&#xff08;chessboard distance&#xff09; 参考 像素的相邻像素 4邻域 坐标 ( x , y ) (x,y) (x…

kali 2024 安装SageMath

kali2024安装sagemath避坑指南 安装遇到的问题Install from conda-forge使用mamba安装sage 安装遇到的问题 刚开始使用sudo apt -y install sagemath和源码安装遇到各种包冲突&#xff0c;有的还涉及到系统底层包&#xff0c;没有避开。然后尝试使用mamba安装成功&#xff0c;…

93. UE5 GAS RPG 应用负面效果表现

在上一篇文章里&#xff0c;我们实现了添加负面效果GE&#xff0c;并且在添加GE时&#xff0c;也会给角色应用一个负面效果标签作为标识。在这一篇里&#xff0c;我们将通过负面效果标签标识&#xff0c;应用角色身上展现对应的负面效果的表现。 我们将在这篇文章里添加一个自定…

第一个React程序

虽然跟着网上的视频&#xff0c;但是都是几年前的教学视频了&#xff0c;于是就在视频的引导下&#xff0c;自己使用vite脚手架建立一个React项目。 首先来到vite官网&#xff1a; 和当时建立vue项目一样&#xff0c;使用该命令创建&#xff0c;只是后面选择框架时选择react&a…