首先扩O:T了一个点(因为上界松),83分。

#include <cstdio>
using namespace std; int n, p; void exgcd(int a, int p, int &b, int &x){
if (p==){
b=, x=;
return;
}
exgcd(p, a%p, b, x);
int tmp=b;
b=x;
x=tmp-a/p*x;
return;
} int main(){
scanf("%d%d", &n, &p);
int x, y;
for (int i=; i<=n; ++i){
exgcd(i, p, x, y);
printf("%d\n", (x+p)%p);
}
return ;
}

然后费马,事实证明果然更慢,上界很紧。

#include <cstdio>
using namespace std; int n, p; int expower(int a, int pow, int mod){
int ans=;
while (pow){
if (pow&) ans=1LL*ans*a%mod;
a=1LL*a*a%mod;
pow>>=;
}
return ans;
} int main(){
scanf("%d%d", &n, &p);
for (int i=; i<=n; ++i){
printf("%d\n", expower(i, p-, p));
}
return ;
}

正解:首先$1^{-1} \equiv 1 \pmod p$

我们设:$p = k\cdot i + r,~r < i,~1 < i < p$

将其放在模p意义下:$k\cdot i + r \equiv 0 \pmod p$

两边同乘i-1,r-1就会得到:

$\begin{eqnarray*} k\cdot r^{-1} + i^{-1} &\equiv& 0 &\pmod p\\ i^{-1} &\equiv& -k\cdot r^{-1} &\pmod p\\ i^{-1} &\equiv& -\left\lfloor\frac{p}{i}\right\rfloor\cdot \left(p\bmod i\right)^{-1} &\pmod p\ \end{eqnarray*}$

于是核心代码就一行:

A[i] = -(p / i) * A[p % i];

我的代码:

注意:有可能是负数

#include <cstdio>
using namespace std; const int maxn=;
int n, p, a[maxn]; int main(){
scanf("%d%d", &n, &p);
a[]=;
printf("%d\n", a[]);
for (int i=; i<=n; ++i){
a[i]=(1LL*-(p/i)*a[p%i])%p;
a[i]=(a[i]+p)%p;
printf("%d\n", a[i]);
}
return ;
}

最新文章

  1. 解决 android 高低版本 webView 里内容 自适应屏幕的终极方法
  2. 转 git安装配置
  3. maven认证信息
  4. 简易的GCC图形界面GCCUI
  5. 如何利用Cloudera Manager来手动安装parcel包
  6. css仅在指定ie浏览器生效
  7. CommandArgument传多个参数
  8. 关于utf8 unicode gbk 编码乱码汇总
  9. Apache httpd + tomcat 简单集群
  10. visual studio 添加链接文件
  11. 解说asp.net core MVC 过滤器的执行顺序
  12. 常用排序算法java实现
  13. 剑指offer面试题5 从头到尾打印链表(c)
  14. 用Python将一个列表分割成小列表
  15. 在centos安装MySql的三种安装方法
  16. 【转】Setting up SDL 2 on Visual Studio 2010 Ultimate
  17. log4j.properties配置与将异常输出到Log日志文件实例
  18. 在Windows 10中使用内置的SSH Client连接远程的Linux虚拟机
  19. Linux mount BSD disk partition
  20. python 解除装饰器,调用原本函数。

热门文章

  1. LTE-V2X车联网无线通信技术发展
  2. 阿里巴巴开源项目: canal 基于mysql数据库binlog的增量订阅&amp;消费
  3. 2018年长沙理工大学第十三届程序设计竞赛 Dzzq的离散数学教室1
  4. PostgreSQL recovery.conf恢复配置
  5. c#学习之路---壁咚漏洞搜索
  6. Spring配置hibernate读取实体类映射mappingResources,annotatedClasses,packagesToScan
  7. Android源码中添加C可执行程序
  8. sys模块 进度条百分比
  9. 全局事务/分布式事务 (Global Transaction/ A distributed transaction)之我见
  10. tomcat启动时加载配置文件 报错