首页 > 其他分享 >快速幂 & 光速幂 科技

快速幂 & 光速幂 科技

时间:2023-10-17 20:23:35浏览次数:33  
标签:光速 int sqrt times 科技 ans 快速 mod

快速幂 & 光速幂 科技

快速幂

单次查询复杂度 \(O(\log n)\) 不需要预处理,不多说了

\(\log a\) 计算 \(x^a\):

const int mod=998244353;
il int fast_pow(int x,int a){
    int ans=1;
    while(ans){
        if(a&1)ans=(1ll*ans*x)%mod;
        x=(1ll*x*x)%mod;
        a>>=1;
    }
    return ans;
}

光速幂

预处理复杂度 \(O(\sqrt n)\),单次查询复杂度 \(O(1)\)

我们预处理:

  • \(f_1(i)=x^i,i \leq \sqrt n\)
  • \(f_2(i)=x^{i\sqrt n},i \leq \sqrt n\)

可以得到

\[\begin{aligned} x^k & = x^{\left\lfloor\frac{k}{\sqrt n}\right\rfloor\times\sqrt n +k\%\sqrt n}\\ & = (x^{\left\lfloor\frac{k}{\sqrt n}\right\rfloor\times\sqrt n} )\times (x^{k\%\sqrt n})\\ & = f_1[k/ \sqrt n]\times f_2[k \% \sqrt n] \end{aligned} \]

const int N=32000;//sqrt(1e9)
const int mod=998244353;
int f1[N+10],f2[N+10];
int light_pow(int x){
    return (1ll*f1[x/N]*f2[x%N])%mod;
}
int main(){
    int p;
    cin>>p;
    f1[0]=f2[0]=1;
    for(int i=1;i<=N;i++) f1[i]=(1ll*p*f1[i-1])%mod;
    for(int i=1;i<=N;i++) f2[i]=(1ll*f1[N]*f2[i-1])%mod;
}

没了。

标签:光速,int,sqrt,times,科技,ans,快速,mod
From: https://www.cnblogs.com/cccomfy/p/17770574.html

相关文章

  • 在Android Studio上使用flutter Intl插件快速实现国际化和多国语言
    Flutter实现国际化和多语言支持在Flutter中实现国际化和多语言支持通常涉及以下步骤:添加依赖库:首先,你需要添加flutter_localizations依赖库到你的pubspec.yaml文件中。这个库包含了Flutter国际化所需的核心功能。dependencies:flutter:sdk:flutterflutter_localiza......
  • NAKIVO Backup & Replication 10.10 - 快速高效能的备份解决方案
    NAKIVOBackup&Replication10.10-快速高效能的备份解决方案"#1DataProtectionforSMBs,EnterprisesandMSPs"请访问原文链接:https://sysin.org/blog/nakivo-backup-10/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgNAKIVOBackup&Replication10Fast......
  • 稀疏矩阵快速转置
    如果需要将一个使用三元组形式存储的稀疏矩阵进行转置,当然可以直接交换每一个结点的行和列。但这样做的问题在于,原矩阵是按行数升序排列的,转置之后的矩阵就会变为无序的。快速转置算法的目的就在于得到一个同样有序排列的转置后矩阵。三元组和稀疏数组定义#defineMAXSIZE1250......
  • Spring Boot中的过滤器、拦截器、监听器技巧汇总:让你快速成为大神
    ......
  • 对话在行人 | 微乘科技:升级数智底座,从管控向“管理+服务”转变
    对话在行人从信息化在行人到数智化在行人,用友持续深耕企业软件与服务产业35年,截至目前已有3.96万家大中型企业选择用友BIP推进数智商业创新。为探索行业数智化成功路径,分享企业数智化领先实践,2023年9月,用友正式推出聚焦行业领先企业数智化转型的高端访谈栏目《对话在行人》。此栏目......
  • vscode快速配置汇编环境
    微机原理的课程需要,简单快速记录环境的搭建找到并安装插件masm。MASM/TASM的汇编工具默认是tasm这样就无法在vscode终端进行debug,打开插件设置如下修改:测试代码实现小写字母转大写,右键运行当前程序。DATASEGMENTMEGDB'Pleaseenteralowercaseletter:','$'DAT......
  • 2-快速上手——从0到1掌握算法面试需要的数据结构(一)
    数据结构层面,大家需要掌握以下几种:数组栈队列链表树(这里我们着重讲二叉树)对于这些数据结构,各位如果没有大量的可支配时间可以投入,那么其实不建议找厚厚的大学教材来刷。此时此刻,时间为王,我们追求的是效率的最大化。不同的数据结构教材,对数据结构有着不同的划分、不同的解......
  • 重新开始学前端,面向社区的快速反馈式学习
    重新开始学前端在设计稿还原、数据结构和算法、构建工具、架构、源码这几个方面要学的是在太多了,做个记录分享一下计划在每个方向个社区进行交流和反馈,我更喜欢和社区交流快速反馈的学习方式每个方向都有一个交流的社区那就好1设计高还原高质量的还原设计稿任何时候都是......
  • Playwright- python 快速开始
    Playwright模块提供了一种启动浏览器实例的方法。以下是使用Playwright驱动自动化的典型示例:fromplaywright.sync_apiimportsync_playwrightdefrun(playwright):chromium=playwright.chromium#or"firefox"or"webkit".browser=chromium.launch()pa......
  • 圆心科技助力公立医院提升医疗服务质量,快速打造智慧医院
    随着云计算、大数据、物联网、区块链、新一代互联网通信等新技术的不断发展,“新基建”的不断升级,新医改的不断深化,智慧医院成为我国医院现代化建设的重要发展方向。在这样的背景下,为助力智慧医疗建设长效发展,我国医疗健康企业北京圆心科技集团股份有限公司基于技术优势与数字......