题面

传送门

题解

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(分块)相关推荐

  1. 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里是不变的,可以数论分块,再在每一段里 ...

  2. hdu 6395Sequence【矩阵快速幂】【分块】

    Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total ...

  3. LOJ#3086. 「GXOI / GZOI2019」逼死强迫症(矩阵快速幂)

    题面 传送门 题解 先考虑全都放\(1\times 2\)的方块的方案,设防\(i\)列的方案数为\(g_i\),容易推出\(g_i=g_{i-1}+g_{i-2}\),边界条件为\(g_0=g_1= ...

  4. 【做题】SRM701 Div1 Hard - FibonacciStringSum——数学和式&矩阵快速幂

    原文链接 https://www.cnblogs.com/cly-none/p/SRM701Div1C.html 题意:定义"Fibonacci string"为没有连续1的01串 ...

  5. BZOJ-1008 越狱 数论快速幂

    1008: [HNOI2008]越狱 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 6192 Solved: 2636 [Submit][Status] ...

  6. HDU 2243考研路茫茫——单词情结 (AC自动机+矩阵快速幂)

    背单词,始终是复习英语的重要环节.在荒废了3年大学生涯后,Lele也终于要开始背单词了. 一天,Lele在某本单词书上看到了一个根据词根来背单词的方法.比如"ab",放在单词前一般 ...

  7. BZOJ 1008--[HNOI2008]越狱(容斥快速幂)

    1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 12593  Solved: 5439 [Submit][Stat ...

  8. 43行代码AC_HDU-2604 Queuing(矩阵快速幂,附详细的知识讲解、模板例题)

    一道经典的矩阵快速幂模板题. 传送门1-->快速幂基本思想 传送门2-->矩阵快速幂讲解(教主传授) 传送门3.1-->HDU-1575(经典矩阵快速幂模板题1) 传送门3.2--& ...

  9. 数学--数论--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 ...

最新文章

  1. 沉甸甸的证书,沉甸甸的心情
  2. X5本地应用打包服务器环境搭建
  3. 【分享】Maven插件的源码下载(SVN)
  4. PAT甲级1134 Vertex Cover :[C++题解]顶点覆盖、图论、用结构体存边,bool数组判断
  5. How is SCM product maintenance tcode redirecting access to MARA
  6. 带研发团队后的日常思考1 初级管理者的困惑
  7. python保留字的是_Python保留字
  8. vscode 推荐premiter_自用VSCode优质插件推荐
  9. java ee junit_JavaEE——Junit
  10. kali怎么进入root用户_linux中怎么进入root用户
  11. 为什么需要学习编程?
  12. [JavaScript]Call和Apply方法
  13. C++ std::set find 错误 operator中不能有<=
  14. c语言菜单选择如何用字符形式,C语言编写R进制转换通用程序(R=2.5.8.16),菜单选择的形式!!急!!!...
  15. android逆向去广告,教程]安卓逆向去广告教程送给大家(
  16. 简单易懂的现代魔法——Play Framework攻略1
  17. 新政举市暖冬再现? 业内乐观情绪高涨
  18. python中pd是什么意思_何时申请(pd.to_numeric)以及何时在python中使用...
  19. EDAS系统上传稿件The font Arial-ItalicMT is not embedbed in the fille.(FAQ 109)解决
  20. 智慧社区管理系统06(业主列表和功能实现)

热门文章

  1. redis cluster 集群重新启动关闭
  2. Linux--内存结构
  3. ad16自动布线设置规则_Cadence的allegro下设置阻抗
  4. hypermesh 连接单元_西门子五件套L9型2M插头2兆线接头射频同轴电缆连接器三通双通头_...
  5. HTTP自定义Header-(SOCKET-TCP)
  6. 【开发环境】安装 Visual Studio Ultimate 2013 开发环境 ( 下载软件 | 安装软件 | 运行软件 )
  7. 【Android RTMP】x264 图像数据编码 ( NV21 格式中的 YUV 数据排列 | Y 灰度数据拷贝 | U 色彩值数据拷贝 | V 饱和度数据拷贝 | 图像编码操作 )
  8. 【Android 应用开发】Android - TabHost 选项卡功能用法详解
  9. 台哥原创:java 扫雷源码
  10. 加了try的情况下线程中抛出未捕获的异常