由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - Hackerrank Arithmetic Progressions
相关主题
hackerrank的xor题目A Google Problem (2)
最近有人做过amazon online assessment吗?换题库了吗请教几个面试题
HackerRank 和 C#大家来讨论一下这个求长方形面积的问题吧
一道题:Vertical Sticks国内Google电面两轮 已挂
我来猜一个:以后的面试趋势是上机化segment tree size 是固定的吗
尼玛Hackerrank的题比Leetcode难不止一个数量级啊面试被问了这样一道题
问几道面试题问一道精华帖的老题
Ask a google interview question(2)问个C的基本问题
相关话题的讨论汇总
话题: hackerrank话题: arithmetic话题: pn话题: p1
进入JobHunting版参与讨论
1 (共1页)
j******s
发帖数: 48
1
在网上到是找到个解法
http://hackerrank.blogspot.com/2013/03/arithmetic-progression.h
不过完全不知道如何Handle这种题,感觉是纯数学的东西,各位大神都是如何练这种类
型的题的?诚心请教!
s********9
发帖数: 586
2
我觉得hackerrank有些题不适合面试用,这类题光是面试官解释起来就得花个十分钟
j******s
发帖数: 48
3
纯粹想把这道题解决了而已,权当锻炼思维。

【在 s********9 的大作中提到】
: 我觉得hackerrank有些题不适合面试用,这类题光是面试官解释起来就得花个十分钟
b********n
发帖数: 29
4
花了两个礼拜才做出来。。。各种查资料。。。
数学上面,得到恒定差的次数是p_1+...+p_n, 得到的定差结果是d1^p1*d2^p2...*dn^
pn*(p1+..._pn)!
这个公式可以通过自己手推,把2个等差数列乘起来,你会发现求两次差就可以得到定
值,把3个乘起来,...一直到把n个乘起来,得到的求差次数是一个和式(在这个网页
里面有http://www.mymathforum.com/viewtopic.php?f=40&t=7993)而这个和式正好等于(p1+...+pn)!
下面的问题就在于提高运算效率,有三点
第一点就是如何maintain任何一个区间里的(p1+...+pn)和d1^p1*...*dn^pn. 这个因为
是range query,用segment tree得到,可以得到lg(n)的update和query time.如果每
次query都需要求一遍和的话,需要O(n)时间,如果提前算prefix sum的话,query是O(
1),可是update v需要O(n),所以两种方法都会超时,必须同时有O(lgn)的update和
query time才行。
segment tree是从这个人的博客里学到的http://se7so.blogspot.com/2013/01/arithmetic-progression.html
第二点,算阶乘不要每次query都算,最后积累在一起,直接算到最大的数,把中间结
果存起来。注意当p1+...+pn>1000003时,阶乘求模就是0.
第三点,做指数求模要用这个快速方法:
http://en.wikipedia.org/wiki/Modular_exponentiation
这题做得我走火入魔了,就耽搁了不少时间,其实对准备面试来说,确实是得不偿失。
但是做出来了以后觉得提高还是挺大的。
期待ACM的大牛们可能有更简单的解释。
j******s
发帖数: 48
5
谢谢分享!感激不尽!

O(

【在 b********n 的大作中提到】
: 花了两个礼拜才做出来。。。各种查资料。。。
: 数学上面,得到恒定差的次数是p_1+...+p_n, 得到的定差结果是d1^p1*d2^p2...*dn^
: pn*(p1+..._pn)!
: 这个公式可以通过自己手推,把2个等差数列乘起来,你会发现求两次差就可以得到定
: 值,把3个乘起来,...一直到把n个乘起来,得到的求差次数是一个和式(在这个网页
: 里面有http://www.mymathforum.com/viewtopic.php?f=40&t=7993)而这个和式正好等于(p1+...+pn)!
: 下面的问题就在于提高运算效率,有三点
: 第一点就是如何maintain任何一个区间里的(p1+...+pn)和d1^p1*...*dn^pn. 这个因为
: 是range query,用segment tree得到,可以得到lg(n)的update和query time.如果每
: 次query都需要求一遍和的话,需要O(n)时间,如果提前算prefix sum的话,query是O(

l***z
发帖数: 9
6
昨天卡了三个小时没做出来。。。
真是好心人啊,可算知道怎么做了
这种题确实对面试用处不大,不过当个思维训练也挺有意思的

O(

【在 b********n 的大作中提到】
: 花了两个礼拜才做出来。。。各种查资料。。。
: 数学上面,得到恒定差的次数是p_1+...+p_n, 得到的定差结果是d1^p1*d2^p2...*dn^
: pn*(p1+..._pn)!
: 这个公式可以通过自己手推,把2个等差数列乘起来,你会发现求两次差就可以得到定
: 值,把3个乘起来,...一直到把n个乘起来,得到的求差次数是一个和式(在这个网页
: 里面有http://www.mymathforum.com/viewtopic.php?f=40&t=7993)而这个和式正好等于(p1+...+pn)!
: 下面的问题就在于提高运算效率,有三点
: 第一点就是如何maintain任何一个区间里的(p1+...+pn)和d1^p1*...*dn^pn. 这个因为
: 是range query,用segment tree得到,可以得到lg(n)的update和query time.如果每
: 次query都需要求一遍和的话,需要O(n)时间,如果提前算prefix sum的话,query是O(

1 (共1页)
进入JobHunting版参与讨论
相关主题
问个C的基本问题我来猜一个:以后的面试趋势是上机化
Java 问题,请教如何找出一个array里的duplicate segments? (转载)尼玛Hackerrank的题比Leetcode难不止一个数量级啊
c++!问几道面试题
一道题Ask a google interview question(2)
hackerrank的xor题目A Google Problem (2)
最近有人做过amazon online assessment吗?换题库了吗请教几个面试题
HackerRank 和 C#大家来讨论一下这个求长方形面积的问题吧
一道题:Vertical Sticks国内Google电面两轮 已挂
相关话题的讨论汇总
话题: hackerrank话题: arithmetic话题: pn话题: p1