摘要:
刚做完一道推公式题,这题跟上一题解题思路很像。做完后上网搜索,发现有些人不是我这样做的,他们是发现了结果中有循环节,不过我还是觉得我的做法更巧妙。我的做法如下:首先推出公式f(n)=cell[(n+1)*(n+1)*(2n-1)/4];这里涉及浮点数向上取整问题,将会给取余操作带来很大的麻烦,于是分类讨论之,我们记g(n)=(n+1)*(n+1)*(2n-1)。显然,当n为奇数时,g(n)能被4整除当n为偶数时,我们将g(n)等价转换为:n*n*(2n-1)+4*n*n-1,于是结论就显然了,g(n)+1一定能被4整除,这正是结果向上取整后的结果。接下来就用我上一题的方法如法炮制就行了。/* 阅读全文
摘要:
题目蛮简单的,但是纠结了好久。原因倒不是推不出公式,而是推出公式以后不好办,因为公式是(n+2)*(n+1)*n/6,而n最大为10000000,这样的话即使用long long 也存不下。记得同余公式里关于除法的好像只有逆元的一些,上网找了一下,确定没有。于是只有自己继续推了。最后,自己终于证明了如下公式:不妨设a > b,r为a、b的公约数,则有(a/r)%(b/r) = (a%b)/r。不知道这个公式之前有没有人推出来过,反正自己挺有成就感的。其实也很好证明,如下:设(a/r)%(b/r) = z,则一定有且仅有一个k满足(a/r) = k(b/r) + z。从而得a = kb + 阅读全文