
算法
foradawn
这个作者很懒,什么都没留下…
展开
-
全排列的编码与解码——康托展开及其逆展开
一、康托展开:全排列到一个自然数的双射 X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0! ai为整数,并且0<=ai<i(1<=i<=n) 适用范围:没有重复元素的全排列 二、全排列的编码: {1,2,3,4,...,n}的排列总共有n!种,将它们从小到大排序,怎样知道其中一种排列是有序序转载 2016-11-13 21:35:27 · 601 阅读 · 0 评论 -
A+B问题
A+B问题 描述 给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。 说明 a和b都是 32位 整数,可以使用位运算 样例 输入1和2,输出为3 实现 class Solution { public: /* * @param : An integer * @param : An integer * @retu原创 2017-12-15 11:40:09 · 345 阅读 · 0 评论 -
2.尾部的零
2.尾部的零 设计一个算法,计算出n阶乘中尾部零的个数 样例 11! = 39916800,因此应该返回 2 分析 两个大数字相乘,都可以拆分成多个质数相乘,而质数相乘结果尾数为0的,只可能是2*5。而在某个范围内5的个数必定比2少,因为每隔2个数就有会出现因子2。 对于一个正整数n来说,怎么计算n!中5因子的个数呢?我们可以把5的倍数都挑出来,即: 令 n! = (5*K原创 2017-12-24 00:52:38 · 252 阅读 · 0 评论 -
同余定理(求余数)
现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数除10003之后的余数输入第一行有一个整数m(1<=m<=8),表示有m组测试数据;随后m行每行有一个自然数n。输出输出n整除10003之后的余数,每次输出占一行。样例输入345465456541样例输出456948代码如下:[cpp] view plain copy/* 同余定理:(a+b)%c=((a%c)+(...转载 2016-11-15 13:52:27 · 1196 阅读 · 0 评论