zoukankan      html  css  js  c++  java
  • 水题(初等数论相关)

    水题(初等数论相关)

    给你 3 个正整数 n,a,b,求(sum_{i=0}^n lfloor frac{a^i}{b} floor)的值。由于答案可能会很大,所以你只需要求出答案关于353448299取模的值。对于30%的数据,n<=1e5,a<=1e18,b<=1e8。对于20%的数据,n<=1e18,a=b-1,b<=1e18。对于剩下50%的数据,n<=1e18,a<=1e18,b<=1e5。有T<=100组数据。

    我好sb啊。。由于同余中除法运算必须要用逆元,因此对于下取整这种东西并玩不来。考虑拆分式子,显然([frac{a^i}{b}]=frac{a^i}{b}-frac{a^i\%b}{b})。第一个部分显然可以用等比数列求和来解决,后面那个部分可以(O(n))爆算,这样就避开了下取整,而能在(O(tn))的时间复杂度内算出式子。

    但是这个算法对于n<=1e8的情况依然力不从心。我们先来看a=b-1的数据点,可以发现(a^i\%b)的值要么是1要么是b-1(因为((b-1)^2=b^2+2b+1))。剩下的就是用公式了。

    还有剩下30%,是b<=1e5的数据。由于(a^i\%b)会有一个长度小于b的循环节(不一定从第一个数开始循环!),找到这个循环就可以了。

    结合这三个算法,就可以拿到满分了。至于程序。。真的没希望的。

  • 相关阅读:
    洛谷 1012 拼数(NOIp1998提高组)
    洛谷 1540 机器翻译
    洛谷 1328 生活大爆炸版石头剪刀布(NOIp2014提高组)
    洛谷 2820 局域网
    洛谷 1359 租用游艇
    洛谷 1195 口袋的天空
    洛谷 1316 丢瓶盖
    洛谷 1258 小车问题
    洛谷 1017 进制转换 (NOIp2000提高组T1)
    GYM
  • 原文地址:https://www.cnblogs.com/MyNameIsPc/p/9107015.html
Copyright © 2011-2022 走看看