算法:计数,编码,解码



杨辉三角

给定n求出中所有项的系数?

方法一:利用递推,根据规律,可以从第一层开始逐个的推导出系数,但我们只需要第n行的系数,却把n行所有的系数都求出来了,复杂度为O(n2)

方法二:利用等式,从开始从左往右递推,这样就得到第n行的所有系数。

代码:https://code.csdn.net/snippets/452078

约数个数

给定n,求n的正约数个数?

首先要得到n唯一分解式,每个素因子的选择情况有0,1,2…akak+1种,则根据乘法原理,n的正约数个数为:(a1+1)(a2+1)…(ak+1)= 

其中n的唯一分解式可以通过从2开始逐个除n方法得到,每次找到一个素因子之后就把它“除干净”,即可保证找到的因子都是素数。

小于n且与n互素的整数个数

对于正整数n,求1,2,3…n中与n互素的个数?

容斥原理。首先要得到n唯一分解式,从总数n中减去p1,p2,…,pk倍数的个数,即,然后加上“同时是两个素因子的倍数”的个数,再减去“同时是3个素因子的倍数”。。。得到,传送中的欧拉公式根据杨辉三角系数,可以变形为

代码:https://code.csdn.net/snippets/452080


编码与解码

编码:快速写出任意一个字符串的编号,如有a<b<c,两个a,一个b,一个c组成的四位编码,输入acab,则输出5

可以算出该字符串小的字符串个数,再加一就得到该字符串的编号。例如求f(caba)的编号,则编号为f(cba)+f(caa)+f(b)+1=11。其中设字符一共有k类,个数分别为n1,n2,…,nk,则有多重集的全排列个数为

解码:由编号得出字符串

例如,序号8,求字符串。序号8,有7个比他小的编码,则从高位开始,af(cba)=6<7bf(caa)=3,6+3=9>7,则最高位为bbaf(ca)=2,2+6=8>7,则高两位为ba,则baac7baca8.

代码:https://code.csdn.net/snippets/452082


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值