题目很简单,求斐波那契数列的和的四倍。
我一开始拿rust写的时候,想的是直接上矩阵快速幂,结果写了个矩阵相乘的时候就溢出了。我还在生气这个rust版本太低了,没有u128。其实根本没必要这么复杂,只要写一个斐波那契数列递推循环,在循环中把和加起来就行了。
大神都是fold写的。
我用py版本写了一个快速幂也过了,py的大数还挺好使的,这都不会溢出。




- 阅读剩余部分 -

题目
题目也很简单,类似于2-sum问题,但是有个最近距离的说法。
就是选两个隔的最近的数。如果距离一样就选Index小的。
这样就给了优化空间。
如果target-i不在set里,就把target-i insert进set里,i继续在nums里走,第一个找到的肯定是距离最近的。

本来我写的都是超时的。。后来仔细想了一下重新写了一下才懂。
与一般的2-sum有点不同






- 阅读剩余部分 -

题目
题目很简单,求vector里连续的string长度最长的k个元素拼成的string。
两个注意点,一个是k可能是为负值,为0.
一个是连续的元素构成的。
本来还以为是k-sum的问题,其实很简单。

吐槽:真不太会用迭代器啊,得好好看看文档。





- 阅读剩余部分 -

题目也很简单,简单的数论题目,就是找m-n=g的第一对素数。
我的做法是用素数筛。而且是区间的素数筛。
求大区间的素数筛的做法是,先求2到sqrt(n)之间的素数。原因:
求a到b之间的素数的话,b以内的合数的最小质因数一定不超过sqrt(b)。如果有sqrt(b)以内的素数表的话,就可以把埃式筛法运用在[a,b)上了。也就是说,先分别做好[2,sqrt(b))的表和[a,b)的表,然后从[2,sqrt(b))的表中筛得素数的同时,也将其倍数从[a,b)的表中划去,最后剩下的就是区间[a,b)内的素数了。

感觉这个做法很聪明的一点是把素数筛缩放了,在得到区间素数表的时候只要加上a就行了。




- 阅读剩余部分 -