博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法:数学问题
阅读量:4060 次
发布时间:2019-05-25

本文共 504 字,大约阅读时间需要 1 分钟。

问题A:

约瑟夫环问题:

0~n-1组成一个环,每次删除顺时针第m个元素,最后剩下哪个?

每轮删除后,新坐标->原坐标映射关系为,(i+m)%(n + 1)

通过最后一次坐标不断反求之前坐标。

注:1~n组成环,则映射为,(i+m-1)%n + 1


问题B:

一行代码求最大公约数:

不需要关心m,n谁大,两种方法都会在第一次执行交换过来。

需要满足的是,m和n必须非零。

方法1:

int gcd(int m,int n){	return n == 0? m : gcd(n, m%n)}

方法2:

int gcd(int a, int b){    while(b^=a^=b^=a%=b);    return a;}

问题C:

有关阶乘的问题:

给定一个N,返回N!结果末尾0的数量。

方法1:

统计因子5的数量。

方法2:

数学思维:
N!中因子5的个数有如下规律:
K = N/5 + N/(5^2) + N/(5 ^3) + … 直到5 ^ i > N


问题D:

给定一个N,返回N!二进制结尾0的数量。

统计因子2的数量K,有如下规律:

K = N - M
M为N二进制表达式中1元素的个数。


转载地址:http://sbwji.baihongyu.com/

你可能感兴趣的文章
STM32固件库命名规则
查看>>
串口的工作原理
查看>>
STM32的NVIC理解
查看>>
STM32外部中断的错误
查看>>
图片拉伸函数详解
查看>>
系统相册和拍照
查看>>
FMDB开启事务
查看>>
coredata使用代码实现
查看>>
autolayout的使用原理及代码实现
查看>>
Xcode各种版本下载
查看>>
Xcode编程问题小结
查看>>
UIView的使用setNeedsDisplay
查看>>
tableView的使用方法详解
查看>>
toolbar ,textfield,图片拉伸,Bundle
查看>>
归档与解归档
查看>>
Window
查看>>
为什么button在设置标题时要用一个方法,而不像lable一样直接用一个属性
查看>>
字符串的截取
查看>>
显示和隐藏Mac隐藏文件的命令
查看>>
crash日志的分析
查看>>