码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 乘法逆元做法——约数之和


    分治+质因数分解——约数之和_北岭山脚鼠鼠的博客-CSDN博客

    思路:


    约数之和可以用公式求得,在用公式前需要先求得a^b的所有质因数以及出现次数。

    公式里面的每一项都是一个等比数列,可以使用等比数列求和公式求得

    为(p1 ^ ( B * a1 + 1 ) - 1 )/(p1 - 1 ),在学习了乘法逆元后,对于这种需要取模含分母运算的可以使用逆元的乘法来代替除法,分子直接使用快速幂,分母部分则是用乘(p1-1)的逆元代替除

    (p1-1).

    特殊的,当p-1是9901的倍数时,此时乘法逆元不存在,但是有p%9901=1.

    代码:

    1. #include
    2. using namespace std;
    3. typedef long long ll;
    4. typedef pair<int,int>PII;
    5. const int N=1e6+10,mod=9901;
    6. int primes[N],cnt[N];
    7. int idx;
    8. ll ans;
    9. bool st[N];
    10. void get_primes(int n)
    11. {
    12. for(int i=2;i*i<=n;i++)
    13. {
    14. if(n%i==0)
    15. {
    16. primes[++idx]=i;
    17. cnt[idx]=0;
    18. while(n%i==0) n/=i,cnt[idx]++;
    19. }
    20. }
    21. if(n>1) primes[++idx]=n,cnt[idx]=1;
    22. }
    23. ll qmi(ll a, ll k,ll p)
    24. {
    25. ll res=1;
    26. while(k)
    27. {
    28. if(k&1) res=res*a%p;
    29. k>>=1;
    30. a=a*a%p;
    31. }
    32. return res;
    33. }
    34. int main()
    35. {
    36. ll a,b;
    37. ans=1;
    38. cin>>a>>b;
    39. get_primes(a);
    40. for(int i=1;i<=idx;i++)
    41. {
    42. if((primes[i]-1)%mod==0)
    43. {
    44. ans=((ll)b*cnt[i]+1)%mod*ans%mod;
    45. continue;
    46. }
    47. ll x=qmi(primes[i],(ll)b*cnt[i]+1,mod);
    48. x=(x-1+mod)%mod;
    49. int y=primes[i]-1;
    50. y=qmi(y,mod-2,mod);
    51. ans=ans*x%mod*y%mod;
    52. }
    53. if(a!=0)
    54. cout<
    55. else
    56. cout<<0<
    57. return 0;
    58. }

  • 相关阅读:
    YOLOv5代码解析(二)
    UE5像素流送详细教程,以及解决黑边和鼠标消失问题
    CentOS7.9安装kafka-3.2.0和window10 下安装kafka-3.2.0
    Leetcode84(柱状图中最大的矩形)
    读书笔记:《BackTrader 量化交易案例图解》
    Containerd容器运行时的Kubernetes(K8s)环境搭建
    三个多月,被现实雪藏了的锐气
    Java生成World,Java操作world,Java导出world文档
    最新ACR15.0新功能如何使用?ps插件camera raw15.0mac版新功能教程
    [容器][Docker]Docker参数设置
  • 原文地址:https://blog.csdn.net/m0_62327332/article/details/126798927
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号