LOJ#162. 快速幂 2(分块)
题面
传送门
题解
orzljz
我们分块,设\(s=\sqrt{p}+1\),那么\(x^a\)可以拆成\((x^s)^{a/s}\)和\(x^{a\bmod s}\),\(O(s)\)预处理,\(O(1)\)计算就可以了
//minamoto
#include<bits/stdc++.h>
#define R register
#define inline __attribute__((always_inline))
#define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i)
#define fd(i,a,b) for(R int i=(a),I=(b)-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
using namespace std;
char buf[1<<21],*p1=buf,*p2=buf;
inline char getc(){return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++;}
int read(){R int res,f=1;R char ch;while((ch=getc())>'9'||ch<'0')(ch=='-')&&(f=-1);for(res=ch-'0';(ch=getc())>='0'&&ch<='9';res=res*10+ch-'0');return res*f;
}
char sr[1<<21],z[20];int C=-1,Z=0;
inline void Ot(){fwrite(sr,1,C+1,stdout),C=-1;}
void print(R int x){if(C>1<<20)Ot();if(x<0)sr[++C]='-',x=-x;while(z[++Z]=x%10+48,x/=10);while(sr[++C]=z[Z],--Z);sr[++C]=' ';
}
const int N=50005,P=998244352;
inline int add(R int x,R int y){return x+y>=P?x+y-P:x+y;}
inline int dec(R int x,R int y){return x-y<0?x-y+P:x-y;}
inline int mul(R int x,R int y){return 1ll*x*y-1ll*x*y/P*P;}
int ksm(R int x,R int y){R int res=1;for(;y;y>>=1,x=mul(x,x))(y&1)?res=mul(res,x):0;return res;
}
int bin[N],bs[N],n,x,s,a;
int main(){
// freopen("testdata.in","r",stdin);x=read(),n=read(),s=sqrt(P)+1;bin[0]=1;fp(i,1,s)bin[i]=mul(bin[i-1],x);bs[0]=1;fp(i,1,s)bs[i]=mul(bs[i-1],bin[s]);while(n--)a=read(),print(mul(bs[a/s],bin[a%s]));return Ot(),0;
}
转载于:https://www.cnblogs.com/bztMinamoto/p/10688045.html
LOJ#162. 快速幂 2(分块)相关推荐
- HDU6395 Sequence(矩阵快速幂+数论分块)
题意: F(1)=A,F(2)=B,F(n)=C*F(n-2)+D*F(n-1)+P/n 给定ABCDPn,求F(n) mod 1e9+7 思路: P/n在一段n里是不变的,可以数论分块,再在每一段里 ...
- hdu 6395Sequence【矩阵快速幂】【分块】
Sequence Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total ...
- LOJ#3086. 「GXOI / GZOI2019」逼死强迫症(矩阵快速幂)
题面 传送门 题解 先考虑全都放\(1\times 2\)的方块的方案,设防\(i\)列的方案数为\(g_i\),容易推出\(g_i=g_{i-1}+g_{i-2}\),边界条件为\(g_0=g_1= ...
- 【做题】SRM701 Div1 Hard - FibonacciStringSum——数学和式&矩阵快速幂
原文链接 https://www.cnblogs.com/cly-none/p/SRM701Div1C.html 题意:定义"Fibonacci string"为没有连续1的01串 ...
- BZOJ-1008 越狱 数论快速幂
1008: [HNOI2008]越狱 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 6192 Solved: 2636 [Submit][Status] ...
- HDU 2243考研路茫茫——单词情结 (AC自动机+矩阵快速幂)
背单词,始终是复习英语的重要环节.在荒废了3年大学生涯后,Lele也终于要开始背单词了. 一天,Lele在某本单词书上看到了一个根据词根来背单词的方法.比如"ab",放在单词前一般 ...
- BZOJ 1008--[HNOI2008]越狱(容斥快速幂)
1008: [HNOI2008]越狱 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 12593 Solved: 5439 [Submit][Stat ...
- 43行代码AC_HDU-2604 Queuing(矩阵快速幂,附详细的知识讲解、模板例题)
一道经典的矩阵快速幂模板题. 传送门1-->快速幂基本思想 传送门2-->矩阵快速幂讲解(教主传授) 传送门3.1-->HDU-1575(经典矩阵快速幂模板题1) 传送门3.2--& ...
- 数学--数论--HDU - 6395 Let us define a sequence as below 分段矩阵快速幂
Your job is simple, for each task, you should output Fn module 109+7. Input The first line has only ...
最新文章
- 沉甸甸的证书,沉甸甸的心情
- X5本地应用打包服务器环境搭建
- 【分享】Maven插件的源码下载(SVN)
- PAT甲级1134 Vertex Cover :[C++题解]顶点覆盖、图论、用结构体存边,bool数组判断
- How is SCM product maintenance tcode redirecting access to MARA
- 带研发团队后的日常思考1 初级管理者的困惑
- python保留字的是_Python保留字
- vscode 推荐premiter_自用VSCode优质插件推荐
- java ee junit_JavaEE——Junit
- kali怎么进入root用户_linux中怎么进入root用户
- 为什么需要学习编程?
- [JavaScript]Call和Apply方法
- C++ std::set find 错误 operator中不能有<=
- c语言菜单选择如何用字符形式,C语言编写R进制转换通用程序(R=2.5.8.16),菜单选择的形式!!急!!!...
- android逆向去广告,教程]安卓逆向去广告教程送给大家(
- 简单易懂的现代魔法——Play Framework攻略1
- 新政举市暖冬再现? 业内乐观情绪高涨
- python中pd是什么意思_何时申请(pd.to_numeric)以及何时在python中使用...
- EDAS系统上传稿件The font Arial-ItalicMT is not embedbed in the fille.(FAQ 109)解决
- 智慧社区管理系统06(业主列表和功能实现)
热门文章
- redis cluster 集群重新启动关闭
- Linux--内存结构
- ad16自动布线设置规则_Cadence的allegro下设置阻抗
- hypermesh 连接单元_西门子五件套L9型2M插头2兆线接头射频同轴电缆连接器三通双通头_...
- HTTP自定义Header-(SOCKET-TCP)
- 【开发环境】安装 Visual Studio Ultimate 2013 开发环境 ( 下载软件 | 安装软件 | 运行软件 )
- 【Android RTMP】x264 图像数据编码 ( NV21 格式中的 YUV 数据排列 | Y 灰度数据拷贝 | U 色彩值数据拷贝 | V 饱和度数据拷贝 | 图像编码操作 )
- 【Android 应用开发】Android - TabHost 选项卡功能用法详解
- 台哥原创:java 扫雷源码
- 加了try的情况下线程中抛出未捕获的异常