d*****u 发帖数: 17243 | 1 不收敛的求和,(跟收敛的求和相比)就是另一种符号而已
这个符号可以按照不同的需求和原则规定出一些结果
你要说是负的也不是不可以
类似0的阶乘 |
|
|
g****t 发帖数: 4493 | 3 (sigma(log10...10)+log10)>>log10=28
(10+(sqrt(10-log10))!)<
(10+log10)*sqrt(10-log10)=33
可以开平方根,用阶乘,28,32,34我实在想不出来 |
|
发帖数: 1 | 4
可以开平方根,用阶乘,34我实在想不出来
10 + [sqrt(10-lg10)+lg10]! = 34 |
|
t******l 发帖数: 10908 | 5 稍微复杂一点点的例子就是,记忆 combination w/ repetition 的公式。
比如举个例子,7 out of 9 combination with repetition,把 visuospatial
sketchpad 描述出来就是:
ice cream 蹦蹦机,9 个 jar,hop 9-1 = 8 次,scoop out 7 次,纸带总长 8+7 =
15 格。里面有 7 格放 scoop 符号,其他自动是 hop 符号,总共 C(15, 7) (7 out
of 15 combination wo/ repetition) 种纸带。
而 combination wo/ repetition 就是对应的 permutation wo/ repetition 除以
invisible seat 的 permutation wo/ repetition (顺序不同算同一种)。所以:
C(15, 7) = P(15, 7) / P(7, 7)
而 permutation wo/ repetition 的 decision tree 的样子,就是第一个位子(第一
层) 15... 阅读全帖 |
|
发帖数: 1 | 6 马工的基本功
递归, 肺不纳气,
最后都转化为 阶乘
比如一个竖着的棋盘,
只能往上和向右
从左下角到右上角有多少种走法 |
|
发帖数: 1 | 7 呵呵我还真不是在吹,你脱离了工薪阶乘就能意识到这点了 |
|
|
|
l*******g 发帖数: 28502 | 10 ☆─────────────────────────────────────☆
lxinzheng (头发2mm长) 于 (Thu Nov 24 17:48:40 2011, 美东) 提到:
?
☆─────────────────────────────────────☆
cattie (blue) 于 (Thu Nov 24 17:50:14 2011, 美东) 提到:
我昨晚奔了大概2个小时。。。再贴一下
☆─────────────────────────────────────☆
lxinzheng (头发2mm长) 于 (Thu Nov 24 17:54:17 2011, 美东) 提到:
又来一遍,你太好了。
☆─────────────────────────────────────☆
lxinzheng (头发2mm长) 于 (Thu Nov 24 19:31:04 2011, 美东) 提到:
大家都听到没,奖励多少好。
☆─────────────────────────────────────☆
cattie (blue... 阅读全帖 |
|
p******i 发帖数: 1763 | 11 ABCD四个自然数
((A')!+(B')!+(C')!+(D')!)!=24
其中A'为 A的导数,A!为 A的阶乘 |
|
|
n*******l 发帖数: 2911 | 13 根号是没有二的,立方根是必须有个三,所以立方根应该避免,但是
平方根没关系。不过根号和前面的阶乘符号,本质上都是一堆函数了,
跟加减乘除这种二元运算符号有本质区别。
另外,如果用ceiling 和floor的符号的话,还会有另外一些有趣的解法,
比如:
ceiling (sqrt (5*5+5)) = 6
floor (sqrt(6*6+6 )) = 6
floor (sqrt(7*7-7)) = 6
要是再加上三角函数等等,就更多了。 |
|
w*******n 发帖数: 3579 | 14 co qiu 1000!
不好意思,那个!不是惊叹号,是阶乘 |
|
z*******y 发帖数: 578 | 15 第二题 我的思路,欢迎大家批评指正,这个方法复杂度是permatation string 长度的平方:
以 N = 5 K=11 为例
1 2 3 4 5
建一个数组 Boolean B[N] 用来标记元素是否已经使用过,初始值为false
建一个数组 Factorial[N] 存阶乘 from 1!~(N-1)!
然后逐位确定数值 对于第i位 (1<=i<=5),使用如下方法确定该位置上的数字:
if (K/Factorial(N-i) == 0)
此时第一个未被使用的数字即应该为i位上的数字
else
int count = K/Factorial(N-i);
此时应该是第(count+1) 个未被使用的数字即应该为i位上的数字
K=K%Factorial(N-i) |
|
h*******n 发帖数: 614 | 16 今天在芝加哥面了Citadel的Financial Technology Associate,分享一下吧
今天一共去了12个人, 5个CMU,2个Harvard,5个Upenn,估计要淘汰2/3
一共见了三个面试官
第一个是印度阿三,Structured Credit组的,一开始就是behavior和简历上的project,这个阿三比较刁钻,我解释得不是特别清楚,所以不太满意,因为我专业是通信,所以又问了很多TCP/IP的问题,不过那个阿三也不太懂,所以我就随便忽悠了一下。然后给我出了一个很简单的编程题,求N的阶乘。
第二个还是阿三,Global Equity组的,同样问了我project的问题,我又结识了一遍,然后问我知道哪些sorting算法,我说了heap, merge, quick,以及在特定条件下可以用bucket sort.然后他要求我设计一个交易系统,能够实时处理各种类型的order,比如limit order, Market order, stop loss等等。我的思路是这样,建两个Heap,一个存放limit buy order,一个存放limit sell ord |
|
M*****c 发帖数: 2753 | 17 bless!
project,这个阿三比较刁钻,我解释得不是特别清楚,所以不太满意,因为我专业是通
信,所以又问了很多TCP/IP的问题,不过那个阿三也不太懂,所以我就随便忽悠了一下
。然后给我出了一个很简单的编程题,求N的阶乘。
,然后问我知道哪些sorting算法,我说了heap, merge, quick,以及在特定条件下可以
用bucket sort.然后他要求我设计一个交易系统,能够实时处理各种类型的order,比如
limit order, Market order, stop loss等等。我的思路是这样,建两个Heap,一个存
放limit buy order,一个存放limit sell order,当有新order输入是,首先判断能否直
接执行,如果不行,就存放在相应的Heap里面,另外对于stop loss order要另外建立
两个Heap存放。这样的话对order的处理时间
熟,所以估计是最后有拍板权的。随便问了我几个操作系统的问题,我答得还凑或,又
问了我在Wharton做的RA的项目,因为我考了CFA level1, 又问了我一个怎样用Call和
Put |
|
e***l 发帖数: 710 | 18 说说我的想法,设g(N,L,R)为最终所求,那么根据最高的block的位置i=(1...N),有N
个情况。于是
g(N,L,R)=Σ C(N-1, i-1) * f(i-1,L-1) * f(N-i,R-1)
i=1,2...N
其中第一项C(n,r)是组合数记号,从n个里面选r个的选法,
第二项f(n,a)表示只考虑最高的左边那些block,用i-1个block摆出从左看,有L-1个
block可见的摆法。
第三项是从右看的情况,函数是同一个(因为对称)。
接下来再考虑f,同样根据最高的block的位置,f可以递归求得
f(N,L) = Σ f(i-1,L-1)
i=1,2...N
再有几个初始值就可以求出g,但是直接的解析式似乎很麻烦。。。
测试了几个例子基本正确,大家看看正确吗?
代码:
#include "stdafx.h"
//求x的阶乘
int factorial(int x){
if(x==0) return 1;
int r=1;
for(int i=1;i<=x;i++)
r=r*i;
return r;
}
//求组 |
|
j**l 发帖数: 2911 | 19 #define MAX_SIZE 1000
void LargeFactorial(int n)
{
if (n < 0)
{
printf("Please make sure n >= 0.\n");
return;
}
int A[MAX_SIZE];
A[0] = 1;
int top = 1;
int i, j;
for (i = 2; i <= n; i++)
{
for (j = 0; j < top; j++)
A[j] *= i; // Should better check if A[j] is larger than MAX_INT
int carry = 0;
for (j = 0; j < top; j++)
{
int x = A[j] + carry;
A[j] = x % 10;
carry = |
|
|
j**l 发帖数: 2911 | 21 递归版本没让写,但我知道tail recursion, 编译器实际会把它优化为循环。
算阶乘和Fibonacci数列都可以用尾递归,引入一个累乘器和累加器参数。链表逆置用
递归也可以再引入一个参数来实现尾递归 |
|
r*****b 发帖数: 8 | 22 给a list of number, 返回前top K个:用min-heap?不过如果内存不够怎么办啊?
找两个链表的交集,具体是什么意思?
算阶乘:
可以事先存好一些值,比如存好K!, 当N>K时,就只要计算N*(N-1)*...*(K+1)*(K!)
这样做可以么?
设计电话簿的题:为什么要用suffix tree啊? |
|
p*******l 发帖数: 67 | 23 刚刚linkedin的电话面试完毕,题目很简单,主要是coding了(用的是collabedit)
1.int Fibonacci(int n)。我居然一开始给了n阶乘的实现><不知道自己怎么想的......
2.interviewer给了个interface,其中有两个method要实现,自定义数据结构。
1)int store(int n); //把n保存到你的数据结构里面去
2) boolean twoSum(int sum);就是经典的给一个magic number sum,看是否存在
两个数之和等于这个sum。
我开始给了个O(1)的store和O(n)的twoSum。之后interviewer问如果store用到的不多
,但是twoSum会被频繁的用到,该怎样实现。想了会儿就给了个O(n)的store和O(1)的
twoSum的实现。
平时IDE用惯了,编程的时候出了好些不应该的错误,比如我居然会写ArrayList<
Integer, Integer>这样子的定义,sigh。interviewer看似对我的solution很满意,但
是犯了好些低级错误,估计会... 阅读全帖 |
|
q****x 发帖数: 7404 | 24 比如C(m,n) = m!/n!(m-n)!,m = 20,n = 10。
这里如果分别算阶乘,m!可能溢出。如果分子分母各乘一个新元素,马上约分,又可能
出现除不尽的情况。 |
|
f*******t 发帖数: 7549 | 25 我按这个思路做,主要是chance那边想不到合适的解法。用排列组合算很直观,但因为
数据量大(N可以到50),阶乘是天文数字,所以我的代码只能通过sample testcases。 |
|
d*******l 发帖数: 338 | 26 阶乘直接用double就行。double其实能表示的范围挺大的,我们往往会低估。不过精度
就不能保证了。好在这题精度要求不高,反正我用double是可以的。
至于chance,把所有可能的长度枚举一遍,事先算好每个长度对应的比它小的元素有多
少个,然后就是个排列组合的问题。
length |
|
d*******l 发帖数: 338 | 27 还是这样比较直接,都不用算排列跟阶乘什么的,学习了 |
|
c****m 发帖数: 179 | 28 把阶乘当base。
这个是经典,搜索时候用于储存状态空间。但是感觉面试问这个算难的了。 |
|
H***e 发帖数: 476 | 29 就是算阶乘那个
假设要求第index=8的string(0 based, not 1)
abcd (4个) ,以a开头的有(4-1)!=6个,同理b/c/d/也是6个
8/6 = 1(所选的字母的位置) 8%6 = 2 (下一个index) 所以第一个字母是 b
然后recursion, 剩下 acd, (3-1)!=2 index=2, index/2= 1. index%2=0
所以第二个字母为c
剩下ad, (2-1)!=1, index=0, index/1=0, index%2 =0;
所以第三个字母为a
第四个字母为d
总体为bcad
同理,逆函数类似的idea. |
|
N**N 发帖数: 1713 | 30 拿到了一个小公司的analytics的职位,工作内容包括database的ETL和modeling
主要任务是分析数据,做model筛选客户
似乎不用写太多程序,因为有单独的开发部门
面试的时候大约问了研究经历,一些SQL问题,一些编程问题和一些统计/数学题
问题都比较常规,能想起来的有:
SQL/DB--调整日期格式,inventory/sales record数据库设计
统计/数学/智力题--MLE,binomial distribution,扔俩鸡蛋的问题,五局三胜比赛下
赌注的问题
编程--非常简单,各位看到会笑的,比如recursion算阶乘什么的。。。。
请大家指教,这种职位将来一般是什么发展方向?和developer比优劣在哪里? |
|
e***s 发帖数: 799 | 31 超简单的两道题
1.阶乘函数
2.字符串数组,找第三长的那个。 |
|
h********g 发帖数: 496 | 32 如下。本来想算算尾递归和递归的性能区别。结果发现iterative的算法都不行。
每步的结果都%777,就是为了防止结果溢出。
#include
using namespace std;
int factor(int n){
if(n==0) return 1;
int acc=1;
for(int i=n; i>0; i--)
acc=acc*i%777;
return acc;
}
int factor_recursive(int n){
if(n==1 || n==0) return 1;
return factor_recursive(n-1)*n%777;
}
//g++ doesn't optimize for tail-recursion. The following function stops at
Factor(37).
int factor_tailrecursive(int n, int acc){
if(n==1 || n==0) return acc;
re... 阅读全帖 |
|
t****t 发帖数: 387 | 33 (37 * 36 % 777 )* 35 % 777 = 0
为啥会有溢出 |
|
|
|
h********g 发帖数: 496 | 36 g++对尾递归没有优化。尾递归和递归同时 segmentation fault
iteration的没有问题。 |
|
h********g 发帖数: 496 | 37 当然以上代码中的注释是错的。实际n达到8位数往上才开始出错,而不是37. |
|
|
|
p*****2 发帖数: 21240 | 40
那为什么对尾递归感兴趣呢?按说C++也应该不会有优化呀。 |
|
|
p****e 发帖数: 3548 | 42 阶乘要存到1000003,如果K大于等于那个数,V直接为0 |
|
r**h 发帖数: 1288 | 43 有劳了:)
加了点注释
#include
#include
#define MAX 1000003
using namespace std;
// 求(di^pi) % 1000003
long long getMod(int base, long long exp){
long long mod = 1;
for(int i=exp; i>0; i--){
mod = (mod*base) % MAX;
}
return mod;
}
// 求(n!/m!) % 1000003,不过m都是1
long long factorialMod(long long n, long long m){
long long mod = n;
while(--n >= m){
mod = (mod*n)%MAX;
}
return mod;
}
int main(){
int n, q;
cin>>n;
int *a = new int[n+1... 阅读全帖 |
|
p****e 发帖数: 3548 | 44 1. pow(x,n)太慢了
2. cin cout都换成scanf printf
3. 数组m不要,更新部分只要更新p就可以了
4. 阶乘的值要存到1000003,方便查
5. 先判断K的值,再计算V |
|
h**6 发帖数: 4160 | 45 我家附近有阶乘商场,方块商场,过马路商场,还有湖上公交站。大家听着是不是很晕。 |
|
b****g 发帖数: 192 | 46 我想明白了,和leetcode的Permutation Sequence思路一样
一半一半的找。
每次都找一个阶乘那么多。 |
|
s********u 发帖数: 1109 | 47 还只是胡思乱想,也不太严谨。欢迎指正。(只讨论目前算法面试题一般涵盖的范围)
前言:
我知道大家都会说当满足最优子结构、subproblem overlap的时候可以用dp。但其实这
个条件个人感觉不太实用。
1.比如不overlap的时候也可以用dp,只是效率不提高,还增加了space cost而已。(
所以这个原则应该是“适合用dp”,而不是“可以用dp”
另外且不说最优子结构,overlap有时候也较难判断,比如boggle game这个,路径一定
是有重复的,但是
subproblem却未必,因为前驱的访问节点会影响后驱节点的"胜利条件"。
2.另外,就算是有overlap,从实用的角度来说,dp(bottom-up)未必方便实现。比如
用DFS来判定二叉树中是否有某个节点(cc150的4.7),bool cover( root, p )本身是
单纯的DFS访问,subproblem不存在overlap;但对整个问题而言,cover不停的调用,
对整个问题而言subproblem存在overlap。同样的还有4.1.因为这两个题目都在DFS中使
用了DFS,递归函数中调用了递归... 阅读全帖 |
|
i******y 发帖数: 191 | 48 任意给定一个二进制数,比如10111,现在要打印出所有的非零位1的个数和等于k的二
进制数。
说得比较饶……
就比如给你10111,给定K=2,也就是说1的个数和只能等于2
那么就要输出:
10100, 10010, 10001, 00110, 00101, 00011,大概就是C(4,2)= 6这么多种组
合。
再比如给定10111,K=3
就要输出:
10110, 10101, 10011, 00111,一共C(4,3)= 4种.
我怎么想都觉得这个方法搞下去是指数级的(或者阶乘级的)复杂度,求简单的办法? |
|
|
|