2021-05-16:时间复杂度必须是logN,如何求阶乘从右向左第一个不为零的数?

福大大 答案2021-05-16:

这道题logN的解法是大步小步法,网上非常难找。另外论代码简洁度,明显是我的代码最简洁。你看了代码后,你会非常失望。因为你苦思冥想都想不出来的问题,原来这么简单。

假设数字是N。

1.当N能被5整除时,采用大步法。N变成N/5。

1.1.当N被4整除时。当N=20时,f(20)=f(4)。

1.2.当N被4整除余1时。当N=5时,f(5)=2f(1)。

1.3.当N被4整除余2时。当N=10时,f(10)=4
f(2)。

1.4.当N被4整除余3时。当N=15时,f(15)=8f(3)。

综合上述4种情况。f(N)=【2的(N&3)次方】
f(N/5)。

2.当N不能被5整除时,采用小步法。N变成N-1。当N=27时,f(27)=(27%10)f(26)=7f(26)。

代码用golang编写。代码如下:

package main

import "fmt"

func main() {

    for i := 1; i <= 3125; i++ {
fmt.Println(i, FactRightNotZero(i))
} } func FactRightNotZero(n int) int {
ans := 1
for n > 0 {
if n%5 == 0 {
ans <<= n & 3 //这是精髓
n /= 5
} else {
ans *= n % 10
n--
}
ans %= 10
}
return ans
}

执行结果如下:

2021-05-16:时间复杂度必须是logN,如何求阶乘从右向左第一个不为零的数?的更多相关文章

  1. 2021.12.16 eleveni的刷题记录

    2021.12.16 eleveni的刷题记录 1. 数论 https://www.luogu.com.cn/problem/P2532 1.1卡特兰数 https://www.luogu.com.c ...

  2. 2021.11.16 P2375 [NOI2014] 动物园(EXKMP+差分)

    2021.11.16 P2375 [NOI2014] 动物园(EXKMP+差分) https://www.luogu.com.cn/problem/P2375 题意: PS:这道神题的背景让人疑惑,重 ...

  3. http://www.cnblogs.com/xia520pi/archive/2012/05/16/2504205.html

    http://www.cnblogs.com/xia520pi/archive/2012/05/16/2504205.html http://www.cnblogs.com/madyina/p/370 ...

  4. labuladong 05.16 微信直播

    labuladong 05.16 微信直播 一.基础: 1.校招相关 1)扫盲 秋招:8-10月 提前批:7月 暑期实习:3-5月 非必须 2)关注公司前景,部门信息,公司财报 企查查,天眼查,多获取 ...

  5. 2021.05.03 T3 数字

    2021.05.03 T3 数字 问题描述 一个数字被称为好数字当他满足下列条件: 1. 它有**2*n**个数位,n是正整数(允许有前导0) 2. 构成它的每个数字都在给定的数字集合S中. 3. 它 ...

  6. 2021.05.14 tarjan

    2021.05.14 tarjan 标准版tarjan 这里使用数组来模拟栈 void tarjan(int x){ ++ind; dfn[x]=low[x]=ind; stacki[++top]=x ...

  7. 2021.08.16 P1260 工程规划(差分约束)

    2021.08.16 P1260 工程规划(差分约束) 重点: 1.跑最短路是为了满足更多约束条件. P1260 工程规划 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 造 ...

  8. 2021.08.16 P1078 文化之旅(最短路)

    2021.08.16 P1078 文化之旅(最短路) 题意: n个地,k个信仰,每个地都有自己的信仰,信仰之间会相互排斥,同信仰之间也会相互排斥,有m条路,问从s到t的最短距离是多少? 有一位使者要游 ...

  9. 2021.08.16 P1300 城市街道交通费系统(dfs)

    2021.08.16 P1300 城市街道交通费系统(dfs) P1300 城市街道交通费系统 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 城市街道交费系统最近创立了.一 ...

  10. 2021.08.16 P1363 幻象迷宫(dfs,我感受到了出题人浓浓的恶意)

    2021.08.16 P1363 幻象迷宫(dfs,我感受到了出题人浓浓的恶意) P1363 幻象迷宫 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 幻象迷宫可以认为是无限 ...

随机推荐

  1. Oracle-登录的用户名和密码大小写敏感

    Oracle-登录的用户名和密码大小写敏感

  2. 02-Spring基于XML的Bean属性注入

    属性值注入:就是给属性赋值 创建一个Account类: public class Account implements Serializable { private int aid; private ...

  3. 详解数仓中sequence的应用场景及优化

    摘要:本文简单介绍sequence的使用场景及如何修改sequence的cache值提高性能. 本文分享自华为云社区<GaussDB(DWS)关于sequence的那些事>,作者:Arro ...

  4. 看了还不懂b+tree的本质就来打我

    看了还不懂b+tree的本质就来打我 大家好,我是蓝胖子. 今天我们来看看b+tree这种数据结构,我们知道数据库的索引就是由b+tree实现,那么这种结构究竟为什么适合磁盘呢,它又有哪些缺点呢? 我 ...

  5. Java里if和else的用法

    前言 在上一篇文章中,壹哥给大家讲解了Java里的输入与输出语句,现在你知道怎么用了吗?接下来我们继续往下学习Java里的流程控制语句,今天先给大家讲一下if和else这一对好基友,这个知识点可以说是 ...

  6. CAS 单点登录系统

    一.什么是单点登录 单点登录(Sign Sion On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系 ...

  7. 手机号码归属地的自动查询.py(亲测有效)

    import requests url = "http://m.ip138.com/sj.asp?mobile=" kv = {'user-agent':'Mozilla/5.0' ...

  8. GIT 操作大全 基于廖雪峰

    命令显示从最近到最远的提交日志  git log /  git log --pretty=oneline 回退到上一个版本:$ git reset --hard HEAD^   (用HEAD表示当前版 ...

  9. pandas之reindex重置索引

    重置索引(reindex)可以更改原 DataFrame 的行标签或列标签,并使更改后的行.列标签与 DataFrame 中的数据逐一匹配.通过重置索引操作,您可以完成对现有数据的重新排序.如果重置的 ...

  10. [Windows/CMD]不重启设置/刷新环境变量

    1 文由 当我已经通过如下路径设置了Maven的环境(maven-3.5.4). "我的电脑"->"属性"->"高级"-> ...