sum函数

Excel笔记2

牧云@^-^@ 提交于 2019-11-27 07:53:15
=IF 函数:最简单应用: =IF(B27>=60," 及格 "," 不及格 ") 多条件的话需要嵌套 ; =IF(E25>=500," 专属 ",IF(AND(E25>=1000,E25<500)," 进卡 "," 普通 ")) IF 函数应用 -- 数据类型判断: ISBLANK--- 是否空格 ISNUMBER---- 是否数字 ISTEXT---- 是否文本 ISNOTTEXT---- 是否非文本 ISNA--- 是否是 #NA ISERR--- 是否是除 #NA 以外的任何错误值 实例: =FIND(" 快乐 ",H25)--- 没判断之前 =ISNUMBER(FIND(" 快乐 ",H25)) --- 判断之后 为了提高易读性,进一步判断: =IF(ISNUMBER(FIND(" 快乐 ",H25))," 包含 "," 不包含 ") 数组计算 :在进行数组的运算之前都需要先选中所需空白单元格。 ==Ctrl+/ 删除数组。数组与单值运算: = 数值 + 表格所有值,然后 ctrl+shift+ 回车。 == 同方向的一维数组计算: =SUM( 第一组数组 * 第二组数组 )---- 新的数组。然后 ctrl+shift+ 回车。 == 不同方向的数组运算:需要行内的每一行 * 整一列,依次计算。 == 数据公式中带有条件判断:判断要计算正数相加结果 =SUM( 全选中

莫比乌斯反演求LCM的另一种做法

两盒软妹~` 提交于 2019-11-27 05:49:04
一个经典问题 求 \[ \sum_{k=1}^n\mathbb{lcm}(k,n) \] 一般的做法是使用 \(\varphi(n)\) 函数。 不经典的做法 \[ \begin{align*} \sum_{k=1}^n\mathbb{lcm}(k,n) &=\sum_{k=1}^n\frac{nk}{\gcd(n,k)}\\ &=\sum_{d|n}\sum_{k=1}^{n/d}\frac{ndk}{d}[\gcd(n,dk)=d]\tag{枚举gcd(n,k)}\\ &=\sum_{d|n}\sum_{k=1}^{n/d}nk[\gcd(\frac{n}{d},k)=1]\tag{同消去d}\\ &=n\sum_{d|n}\sum_{k=1}^dk[\gcd(d,k)=1]\tag{用d代替n/d}\\ &=n\sum_{d|n}\sum_{k=1}^dk\sum_{j|gcd(d,k)}\mu(j)\tag{莫比乌斯函数的性质}\\ &=n\sum_{j|n}\mu(j)\sum_{d|n/j}\sum_{k=1}^djk\tag{交换求和次序}\\ &=n\sum_{j|n}\mu(j)j\sum_{d|n/j}\frac{d(d+1)}{2}\tag{等差数列求和公式}\\ &=\frac{n}{2}\left(\sum_{j|n}\mu(j)j\sum_{d|n/j

python返回函数

♀尐吖头ヾ 提交于 2019-11-27 05:06:26
函数作为返回值 可变参数的求和 可以不返回求和的结果,而是返回求和的函数: 不需要立刻求和,而是在后面的代码中,根据需要再计算 def sum_nums(*args): sum = 0 for i in args: sum = sum + i return sum def lazy_sum(*args): def sum_nums(): ax = 0 for i in args: ax = ax + i return ax return sum_nums if __name__ == '__main__': print(sum_nums(1, 2, 3, 4, 5)) #15 print(lazy_sum(1,2,3,4,5)) #<function lazy_sum.<locals>.sum_nums at 0x000001D547F8B6A8> 返回的是函数 运行的时候需要调用函数 f1 = lazy_sum(1, 3, 5, 7, 9) f2 = lazy_sum(1, 3, 5, 7, 9) print(f1==f2) #False 闭包 注意到返回的函数在其定义内部引用了局部变量args,所以,当一个函数返回了一个函数后,其内部的局部变量还被新函数引用,所以,闭包用起来简单,实现起来可不容易。另一个需要注意的问题是,返回的函数并没有立刻执行,而是直到调用了f()才执行。

连续的子数组和

不问归期 提交于 2019-11-27 04:45:59
给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数。 示例 1: 输入: [23,2,4,6,7], k = 6 输出: True 解释: [2,4] 是一个大小为 2 的子数组,并且和为 6。 使用 HashMap 来保存到第 i 个元素为止的累积和,但我们对这个前缀和除以 k 取余数。 无论何时,只要 sum%k 的值已经被放入 HashMap 中了,代表着有两个索引 i 和 j ,它们之间元素的和是 k 的整数倍。因此,只要 HashMap 中有相同的 sum%k ,返回true,当然还要判断j和i之间是不是相距大于1,另外还有初始的情况,比如:[6,6,7] k=6,输出true。[23,2,6] k=6,输出false。 class Solution { public boolean checkSubarraySum(int[] nums, int k) { //不是滑动窗口,难以滑动,变换数组,查找表问题, 这题和左程云书上355页的题很像,都是看上去是滑动窗口但是划不动,然后将数组转化 if(nums == null || nums.length < 2 ){ return false; } int i = 0; HashMap<Integer

Oracle连乘聚合函数 MUL

♀尐吖头ヾ 提交于 2019-11-27 00:17:33
Oracle提供了求和(SUM),平均值(AVG)等聚合函数,但没有提供连乘的聚合函数。 比如有一个表如下: ID NUM 1 4 2 2 3 2 如果要求NUM列的连乘数,即求: 4*2*2 ,目前Oracle中没有提供类似函数,但可以通过某种变换来求。 公式为: MUL(num) = EXP(SUM(LN(num))) 数学上推导如下: 设 x = 4 * 2 * 2 ln(x) = ln(4*2*2) => ln(4) + ln(2) + ln(2) => sum(ln(num) x = e (sum(ln(sum) x = exp(sum(ln(sum)) 有两个地方要注意: 1. ln的参数不能是负数,求值时要转换成正的。 2. 连乘的结果可能比较大,会超出范围。 参考: http://viralpatel.net/blogs/row-data-multiplication-in-oracle/ http://stackoverflow.com/questions/5416169/mutiplication-aggregate-operator-in-sql 完 转载于:https://www.cnblogs.com/jmax/p/3771772.html 来源: https://blog.csdn.net/weixin_30852419/article/details

杜教筛学习笔记

∥☆過路亽.° 提交于 2019-11-26 14:26:42
杜教筛 杜教筛作用: 以 \(O(n^{\frac{2}{3}})\) 的时间复杂度求出积性函数的前缀和 具体方法: 如要求: \(S(n)=\sum\limits_{i=1}^nf(i)\) 先任取一个积性函数 \(g(n)\) 与 \(f(n)\) 卷积一下,得到: \((f*g)(n)=\sum\limits_{d|n}g(d)f(\dfrac{n}{d})\)   , 对该卷积求前缀和,得到: \(\sum\limits_{i=1}^n(f*g)(i)=\sum\limits_{i=1}^n\sum\limits_{d|i}g(d)f(\dfrac{i}{d})\)   ,改变枚举顺序,把 \(g(d)\) 提到前面来,可得: \(=\sum\limits_{d=1}^ng(d)\sum\limits_{i=1}^{\lfloor\frac{n}{d}\rfloor}f(i)\)  ,再代入 \(S\) 函数: \(=\sum\limits_{d=1}^ng(d)S(\lfloor\dfrac{n}{d}\rfloor)\) 于是我们得到了 \(\sum\limits_{i=1}^n(f*g)(i)=\sum\limits_{i=1}^ng(i)S(\lfloor\dfrac{n}{i}\rfloor)\)  (换成 \(i\) 舒服一点...) 然后显然有 \(g(1)S

莫比乌斯反演

江枫思渺然 提交于 2019-11-25 16:54:17
## 积性函数 \[\forall p,q \wedge gcd(p,q)=1 , f(pq)=f(p)*f(q)\] \(\mu\) 函数定义 \[ n=a_1^{p_1}*a_2^{p_2}\cdots*a_k^{p_k}\\ \mu(n)=\left\{ \begin{array}{lr} 1,n = 1\\ (-1)^k,a_i=1\\ 0,otherwise \end{array} \right. \] \(\mu\) 函数性质 1. \[ \sum_{d|n}\mu(d)=[n=1] \] ([n=1]表示仅当n=1时返回值为1,其余为0) 2. \[ \sum_{d|n}{\mu(d)\over{d}}={\varphi(n)\over{n}} \] 线性筛莫比乌斯函数 void init() { memset(vis,0,sizeof vis); mu[1]=1; for (int i=2;i<=n;++i) { if (!vis[i]) { mu[i]=-1; prime[++tot]=i; } for (int j=1;j<=tot&&i*prime[j]<=n;++j) { vis[i*prime[j]]=1; if (i%prime[j]==0) { mu[i*prime[j]]=0; break; } else { mu[i*prime[j]]=-mu[i