zoukankan      html  css  js  c++  java
  • 表达式

    安利一下洛谷博客
    【问题描述】

    求表达式的值。

    [ sum_{i=1}^{kp} i^{2p-1} mod p^{2} $$,其中p为素数。 **【输入描述】** 一行两个整数k,p。 **【输出描述】** 一行一个整数表示答案。 **【样例】** 样例输入 1 3 样例输出 6 最~~喜欢~~这种题目了,简单明了,言简意赅,通俗易懂,清晰可见,一目了然,不拐弯抹角。。。 ## 但是 _真的不好做啊_ 。。。 此题用到了费马小定理,同余问题,二次展开式(实质上就是$(a+b)^{n}=$一大堆乱七八糟的东西,用了一个如此高级的东西),还有≡(这个叫恒等于,蒟蒻第一次见还以为是全等。。),这道题充分的发挥了**人类的智慧**,把$sum$用的淋漓精致,反正我考试的时候~~肯定想不到~~ # 现在开始动工! 首先,我先把结论抛给大家 $$sum_{i=1}^{p-1} i^{2p-1}equiv frac{p(p+1)}{2} (mod p^{2})]

    好!其中2p-1是奇数哦(题目已经有提示啦)!

    现在开始证明这个结论。

    把右边的2移到恒等于号的左边,

    [sum_{i=1}^{p-1} i^{2p-1} + sum_{i=1}^{p-1} i^{2p-1}equiv (p+1)p (mod p^{2}) ]

    可以理解吧。

    再把(sum_{i=1}^{p-1} i^{2p-1})从后面往前求和(因为从前往后和从后往前都是一样的呀),就变成

    [sum_{i=1}^{p-1} i^{2p-1} + sum_{i=1}^{p-1} (p-i)^{2p-1}equiv (p+1)p (mod p^{2}) ]

    合并

    [sum_{i=1}^{p-1} [i^{2p-1} + (p-i)^{2p-1}]equiv (p+1)p (mod p^{2}) ]

    开始二次项展开

    [(p-i)^{2p-1}= ]

    [p^{2p-1}-C(2p-1,1)p^{2p-2}i+...+C(2p-1,2p-2)pi^{2p-2}-i^{2p-1} ]

    就这样,再与(i^{2p-1})抵消,然后注意一点,因为有((mod p^{2}))所以,当p的指数大于等于2的时候就可以被抵消(2p-1,2p-2等都是奇素数,所以肯定都大于二呀),这么抵消后,最后剩下的就是

    [sum_{i=1}^{p-1}C(2p-1,2p-2)pi^{2p-2} ]

    易得

    [C(2p-1,2p-2)=C(2p-1,1) ]

    又因为

    [C(2p-1,1)=2p-1 ]

    所以

    [sum_{i=1}^{p-1}(2p-1)pi^{2p-2}equiv p(p+1) (mod p^{2}) ]

    (这个式子很重要,以后会用到
    两边式子都有p,同时除以p,注意(mod p^{2})也要除以p,原式就变为

    [sum_{i=1}^{p-1}(2p-1)i^{2p-2}equiv (p+1) (mod p) ]

    啊,松口气松口气,更难的来了

    好吧对于大佬来说很简单费马小定理登场!
    我们有

    [i^{p-1}equiv 1 (mod p) ]

    然后

    [2p-2=2(p-1) ]

    所以

    [sum_{i=1}^{p-1}(2p-1)(i^{p-1})^{2}equiv (p+1) (mod p) ]

    所以

    [sum_{i=1}^{p-1}(2p-1)equiv (p+1) (mod p) ]

    哈哈哈哈额,好开心啊。

    前方路长,继续!

    因为现在左式求的值是个定值,所以原式变成((p-1)(2p-1)equiv (p+1)(mod p))
    展开

    [2p^{2}-3p+1equiv (p+1)(mod p) ]

    因为每个都mod p

    [1equiv 1(mod p) ]

    原式成立!!

    前面辣么多都是预处理,现在处理题目给出的式子。

    [sum_{i=1}^{kp} i^{2p-1} mod p^{2} ]

    将题目中的i去除以p,得到的商和余数用i和j来表示,那么也就是(i=ip+j)(注意区分前面的i和后面的i不一样)

    所以就很巧妙的把原来的式子转换成了

    [sum_{i=0}^{k-1} sum_{j=1}^{p-1} (ip+j)^{2p-1} mod p^{2} ]

    同样二次项展开,然后就可以转换成

    [sum_{i=0}^{k-1} sum_{j=1}^{p-1} [(2p-1)ipj^{2p-1}+j^{2p-1}] mod p^{2} ]

    乘法分配律

    [sum_{i=0}^{k-1} sum_{j=1}^{p-1} (2p-1)ipj^{2p-1}+sum_{i=0}^{k-1} sum_{j=1}^{p-1}j^{2p-1} mod p^{2} ]

    第二个项可以转化成(刚刚预处理时证明的公式

    [sum_{i=0}^{k-1} frac{p(p+1)}{2} ]

    再转化成

    [frac{kp(p+1)}{2} ]

    第一个项则可以用我刚刚说很重要的公式
    变成

    [sum_{i=0}^{k-1} ip(p+1) ]

    继续化简

    [frac{k(k-1)}{2}p(p+1) ]

    将两个式子整合,变成

    [frac{kp(p+1)}{2}+frac{k(k-1)p(p+1)}{2} ]

    没有求和公式了吧
    那么我们在合并同类项之后原式

    [frac{k^{2}p(p+1)}{2} ]

    传说中的O(n)算法!哈哈哈


    你好,这里落花殇

  • 相关阅读:
    一点优化小知识
    网站结构优化之一
    [JOISC 2016 Day 3] 电报
    [HDU 6157] The Karting
    [JOISC 2015 Day2] Keys
    Educational Codeforces Round 107 (Rated for Div. 2)
    [JOISC 2020 Day4] 治疗计划
    CF1131G Most Dangerous Shark
    [APIO2016] 划艇
    [ICPC World Finals 2018] 绿宝石之岛
  • 原文地址:https://www.cnblogs.com/candy067/p/11401956.html
Copyright © 2011-2022 走看看