AcWing 1381. 阶乘

2023-11-08

题目

N 的阶乘(记作 N!)是指从 1 到 N(包括 1 和 N)的所有整数的乘积。

阶乘运算的结果往往都非常的大。

现在,给定数字 N,请你求出 N! 的最右边的非零数字是多少。

例如 5!=1×2×3×4×5=120,所以 5! 的最右边的非零数字是 2。

输入格式:

共一行,包含一个整数 N。

输出格式:

输出一个整数,表示 N! 的最右边的非零数字。

数据范围

1≤N≤1000

输入样例:

7

输出样例:

4

思路分析:

这道题通过计算器的直观展示,我们可以看到从5的阶乘开始末尾有0所以而0是由2*5%10得出,所以我们可以分解成若干个质数相乘,即 2 α × 5 β × x 2^{\alpha}\times 5^{\beta}\times x 2α×5β×x我们现在要找到有多少个2和多少个5,然后除以 10 × min ⁡ { α , β } 10\times \min \left\{ \alpha ,\beta \right\} 10×min{α,β} 最后再取10的模,通过公式(a * b) % c = ((a % c) * (b % c)) % c可以避免溢出,边除边模。

代码:

#include <bits/stdc++.h>

using namespace std;

int main(){
    int n, d_2 = 0, d_5 = 0, res = 1;
    cin >> n;
    for(int i = 1; i <= n; i++){
        int x = i;
        while(x % 2 == 0){
            x /= 2;
            d_2++;
        }
        while(x % 5 == 0){
            x /= 5;
            d_5++;
        }
        res = res * x % 10;
    }
    int k = min(d_2, d_5);
    for(int i = 0; i < d_2 - k; i++) res = res * 2 % 10;
    for(int i = 0; i < d_5 - k; i++) res = res * 5 % 10;
    cout << res % 10 << endl;
    return 0;
}

AcWing题解
题目链接

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AcWing 1381. 阶乘 的相关文章

  • AcWing 853. 有边数限制的最短路

    给定一个 n 个点 m 条边的有向图 图中可能存在重边和自环 边权可能为负数 请你求出从 1 号点到 n 号点的最多经过 k 条边的最短距离 如果无法从 1 号点走到 n 号点 输出 impossible 注意 图中可能 存在负权回路 输入
  • Java中的取模,取余

    一 取余 得出的结果 是数学里除法结果的取整 例如 10 3 3 333 得到的结果是3 0 正负符号与数学里除法算法一致 小数点也是与数学里除法算法一致 二 取模 5 3 gt 2 5 3 gt 2 5 3 gt 2 5 3 gt 2 5
  • 【定理】算术基本定理(唯一分解定理)

    大蒟蒻来水贴了 算术基本定理 唯一分解定理 一句话 任何大于 的自然数 都可以唯一分解成有限个质数的乘积 例如对于大于1的自然数n 这里P i i均为质数 其指数a i i是正整数 这样的分解称为的标准分解式 唯一分解定理具有 唯一性 分配
  • P2524 Uim的情人节礼物·其之弐【康托展开模板题】

    题目链接 我在这里加了树状数组来优化康托展开 但是这道题的数据其实很小 不需要加也是可以的 include
  • AcWing 104. 货仓选址

    题目 在一条数轴上有 N 家商店 它们的坐标分别为 A1 AN 现在需要在数轴上建立一家货仓 每天清晨 从货仓到每家商店都要运送一车商品 为了提高效率 求把货仓建在何处 可以使得货仓到每家商店的距离之和最小 输入格式 第一行输入整数N 第二
  • 扩展欧几里得算法

    扩展欧几里得算法是啥 那就要先知道什么是欧几里得算法 欧几里得算法 扩展欧几里得算法是欧几里得算法的推广 利用欧几里得算法的思想和递归求得贝祖等式a x b y gcd a b 不定方程中的一组x和y的解 原理如下 设a gt b 当b 0
  • 符号“∑”和“Π”的用法。

    符号 和 的用法 ecnelises posted 2011年2月06日 07 33 in 计算机 with tags 公式 数学 级数 记号 6492 阅读 在数学中 符号 和 分别用来表示求和与求积 首先是函数的累积求和 n取 m k
  • Acwing 479.加分二叉树(区间dp)

    当看到这个的时候 我是不知道怎么遍历这个二叉树 尽管给我了中序遍历 后来我才知道一个中序遍历是无法确定二叉树的 老规矩 老师的视频网址 https www acwing com video 495 老师用了区间dp dp l r 是左边界l
  • 牛客 · 奇♂妙拆分

    奇 妙拆分 题目描述 在遥远的米 奇 妙 妙 屋里住着一群自然数 他们没事就喜欢拆 开自己来探 究 现在他们想知道自己最多能被拆分成多少个不同的自然数 使得这些自然数相乘的值等于被拆分的数 输入描述 第 1 1 1行输入一个整数 T
  • 数论——欧拉函数

    在数论中 对正整数n 欧拉函数是少于或等于n的数中与n互质的数的数目 此函数以其首名研究者欧拉命名 它又称为Euler s totient function 函数 欧拉商数等 例如 8 4 因为1 3 5 7均和8互质 百度百科词条 欧拉函
  • Acwing789. 数的范围

    Acwing789 数的范围 题目描述 代码展示 题目描述 代码展示 include
  • uva10105(数论多项式展开公式)

    题意 多项式 x1 x2 xk n 输入n和k 0
  • 小明开了一家糖果店、把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖 小朋友来买糖的时候,他就用两种包装来组合,当然有些糖果数目是无法组合出来的,比如要买10颗糖 在这种包装情况下,最大不能买到

    解法一 import java util Scanner 小明开了一家糖果店 把水果糖包成4颗一包和7颗一包的两种 糖果不能拆包卖 小朋友来买糖的时候 他就用两种包装来组合 当然有些糖果数目是无法组合出来的 比如要买10颗糖 在这种包装情况
  • AcWing4908. 饥饿的牛

    输入样例1 1 5 1 2 输出样例1 2 样例1解释 两捆干草在第 11 天早上被送到了牛棚 所以贝茜第 1 2 天有干草吃 输入样例2 2 5 1 2 5 10 输出样例2 3 样例2解释 两捆干草在第 1 天早上被送到了牛棚 所以贝茜
  • AcWing 861. 二分图的最大匹配

    https www acwing com problem content 863 二分图我不太清楚 我刚做了染色法解决二分图 然后我看了相关资料 https blog csdn net u011815404 article details
  • 最大比例

    题目描述 解析 接下来就是求解k和p的过程 在这道题中很难使用欧几里得算法就求解最大公约数 因此尝试使用另一种方法 更相减损术 循环相减法 如果要使用欧几里得算法的话 就需要开一个非常复杂的根号 非常难算 代码 include
  • 【数论基础】—— 二项式定理

    二项式定理 内容 x y n
  • 2019年第十届蓝桥杯国赛B组试题G-排列数-next_permutation枚举,模拟

    在一个排列中 一个折点是指排列中的一个元素 它同时小于两边的元素 或者同时大于两边的元素 对于一个 1 n 的排列 如果可以将这个排列中包含 t个折点 则它称为一个 t 1 单调序列 例如 排列 1 4 2 3 是一个 3 单调序列 其中
  • Acwing - 算法基础课 - 笔记(数学知识 · 一)

    文章目录 数学知识 一 质数 质数的判定 分解质因数 朴素思路 优化 筛选质数 朴素筛法 埃氏筛法 线性筛法 小结 约数 求一个数的所有约数 求约数个数 求约数之和 求最大公约数 数学知识章节 主要讲解了 数论 组合计数 高斯消元 简单博弈
  • acwing算法提高之动态规划--数字三角形模型

    目录 1 基础知识 2 模板 3 工程化 1 基础知识 暂无 2 模板 暂无 3 工程化 题目1 摘花生 解题思路 DP 状态定义 f i j 从 1 1 走到 i j 所摘花生总和 状态转移 有 从上方走到 i j 有 f i 1 j w

随机推荐

  • 爬虫爬取mp3文件例子

    相信训练模型时数据集的获取也是一个很头疼的事情 搞cv领域的可以扛着摄像头架起三脚架拍摄获取 以前干过 但是如果是nlp领域的呢 特别是chatgpt等大模型出来后对这类文本等数据的需求更大 如果没有现成的数据集的话基本上很难自己创造数据
  • vue自定义指令实现按钮鉴权

    vue中提供了创建自定义指令api directives 一般接口返回权限表如下 在路由守卫中用户登录情况下获取权限 并提交mutations存储在 vuex中 ajax获取菜单数据 let menuList permissions awa
  • vant+vue3+ts 的滑块验证

    vant vue3 ts 的滑块验证 效果图
  • SpringBoot可执行包结构

    相对于传统的JAVA可执行包 jar文件 SpringBoot的包结构有比较大的不一样 标准的JDK定义的jar文件里面是不能够有内嵌jar文件的 所以通常我们在执行一个jar文件里面的应用程序时 还需要通过 classpath来告诉JDK
  • Atcoder beginner contest 303

    A Similar String AC代码 include
  • 动物森友会【科大讯飞杯L题】【二分答案+最大流】

    题目链接 有N个物品 一周有7天 然后呢 要对应的每个物品都要达到各自的需求数量 于是问 最少需要几天才可以达到要求 很明显的 这是线性关系的 我们可以用二分答案来解决这个问题 然后呢怎么知道是否满足条件也就是来确定的 要满足每个物品都要拿
  • [Unity3D]第一人称角色控制器

    Unity3D 最简单最详细的第一人称角色控制器 自学Unity3D有一段时间了 一直想弄一个第一人称角色控制器 网上还是有很多教程和资料 但感觉有很多教程和资料理解起来比较复杂 在这里我结合网上所学的知识自己写了一个比较容易理解的Unit
  • python爬虫归纳_【知识归纳】史上最全的Python爬虫抓取技巧总结

    原标题 知识归纳 史上最全的Python爬虫抓取技巧总结 一 最基本的抓站 import urllib2 content urllib2 urlopen http XXXX read 二 使用代理服务器 这在某些情况下比较有用 比如IP被封
  • Java-代码审核CodeReview要点总结

    1 颗粒度划分要细 例如 当分组循环一个请求一个服务时 如果其中的一个请求抛出异常 应该在catch中捕获 记录错误日志 让循环继续进行 2 非空判断和边境检查 对数组和集合的判断 对map的key值判断 对list的值得判断 3 错误码和
  • Python中list转换为numpy数组出现的问题

    问题为 现有的数据list LuKou train DF KnownCameraTrajec 是一个1000000 30的list数据类型 使用np array list LuKou train DF KnownCameraTrajec 转
  • Installed Build Tools revision 31.0.0 is corrupted. Remove and install again using the SDK Manager

    在最近创建新项目时遇到如题的错误 在重新删除build tools 31版本后还是报错 其实不需要将SDK构建工具从31降为30或更改编译SDK版本 主要问题是SDK build tools31 缺少两个文件 dx bat dx jar 解
  • 记一次SpringBoot项目的Invalid bound statement (not found)错误

    目录 一 前言 二 解决方案 1 第一种 语法错误 2 第二种 编译错误 3 第三种 配置错误 4 第四种 粗心大意 三 写在后面 一 前言 今天写项目的过程中突然报错 Invalid bound statement not found 百
  • 项目启动报错信息:java.lang.NoClassDefFoundError: org/apache/commons/el/Logger

    注 仅供参考 个人运行项目时遇到的问题和解决方案 希望可以给大家带来一丢思路 并非普适性 问题描述 启动tomcat时报错 项目未运行成功 具体报错 十月 18 2021 9 10 11 下午 org apache catalina cor
  • Fmask算法——影像云检测算法

    总结Fmask算法的学习资料 1 经典论文 1 Object based cloud and cloud shadow detection in Landsat imagery 2 Improved cloud and cloud shad
  • 如何建立异地容灾备份体系

    GB T22239 2019 信息安全技术 网络安全等级保护基本要求 即等保2 0 已于2019 12 1 正式实施 其中第二级安全通用要求 应提供异地数据备份功能 利用通信网络能将重要数据定时批量传送至备用场地 第四级安全通用要求 应建立
  • Matlab画图 常用功能及属性设置脚本

    一 plot使用脚本 常规设置 1 线型 颜色 宽度 2 legend 字体 字号 位置 3 label 字体 字号 4 title 字体 字号 加粗 5 gca 边框宽度 坐标轴字体 坐标轴范围 网格 x linspace 0 2 pi
  • 万字长文详解特斯拉自动驾驶体系(感知/规控/标注/仿真)

    作者 和君 编辑 禾隐记 点击下方卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 全栈算法 技术交流群 汽车革命的上半场是电动化 下半场是智能化 电动化只是改变了汽车的动力供给方式 并没有改变汽车的性质
  • ElasticSearch系列十二:掌握ES使用Java API

    一 Java连接ElasticSearch6 x版本 可整合到spring中
  • 洛谷 P1885 Moo

    P1885 Moo 题目描述 奶牛Bessie最近在学习字符串操作 它用如下的规则逐一的构造出新的字符串 S 0 moo S 1 S 0 m ooo S 0 moo m ooo moo moomooomoo S 2 S 1 m oooo S
  • AcWing 1381. 阶乘

    题目 N 的阶乘 记作 N 是指从 1 到 N 包括 1 和 N 的所有整数的乘积 阶乘运算的结果往往都非常的大 现在 给定数字 N 请你求出 N 的最右边的非零数字是多少 例如 5 1 2 3 4 5 120 所以 5 的最右边的非零数字