题目链接

题解:

用威尔逊定理变换,然后求逆元。

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll exgcd(ll a,ll b,ll &x,ll &y)
{if(a==0&&b==0) return -1;if(b==0) {x=1;y=0;return a;}ll d=exgcd(b,a%b,y,x);y-=a/b*x;return d;
}ll inv(ll a,ll m) // 求a关于m的逆元 。 扩展欧几里得求逆元,用这个方法,函数运算过程不会爆long long
{ll x,y;ll d=exgcd (a,m,x,y);if(d==1) return (x%m+m)%m;else return -1;// if(a==1)//     return 1;// return inv(m%a,m)*(m-m/a)%m;
}
int isprime(ll x)
{if(x==2) return 1;if(x<2) return 0;ll sqx=(ll)sqrtl(x);for(int i=2 ;i<=sqx;++i)if(x%i==0)return 0;return 1;
}
ll p,x;
int main()
{int t;cin>>t;while(t--){cin>>p;__int128 product=1;for(ll i=p-1; ;--i){if(isprime(i)){x=i;// printf("%lld\n",i);break;}if(i<=p-2)product=product*i%p;}ll a=product;printf("%lld\n",inv(a,p));}return 0;
}

另一种求逆元写法:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll exgcd(ll a,ll b,ll &x,ll &y)
{if(a==0&&b==0) return -1;if(b==0) {x=1;y=0;return a;}ll d=exgcd(b,a%b,y,x);y-=a/b*x;return d;
}
__int128 inv(ll a,ll m) // 求a关于m的逆元。简洁写法
{// ll x,y;// ll d=exgcd (a,m,x,y);// if(d==1) // return (x%m+m)%m;// else return -1;if(a==1)return 1;return inv(m%a,m)*(m-m/a)%m;
}
int isprime(ll x)
{if(x==2) return 1;if(x<2) return 0;ll sqx=(ll)sqrtl(x);for(int i=2 ;i<=sqx;++i)if(x%i==0)return 0;return 1;
}
ll p,x;
int main()
{int t;cin>>t;while(t--){cin>>p;__int128 product=1;for(ll i=p-1; ;--i){if(isprime(i)){x=i;// printf("%lld\n",i);break;}if(i<=p-2)product=product*i%p;}ll a=product;ll ans=inv(a,p)%p;printf("%lld\n",ans);}return 0;
}

2019 杭电 多校第3场 1006 Fansblog (HDU 6608)相关推荐

  1. 2019杭电多校第七场 Kejin Player HDU - 6656 (期望)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6656 题意:一种游戏,从i级升到i+1级,需要氪金a[i]RMB,有的概率成功,有1-的概率变成x[i ...

  2. 2019杭电多校 第七场 Kejin Player 6656(求期望值)

    2019杭电多校 第七场 Kejin Player 6656(求期望值) 题目 http://acm.hdu.edu.cn/showproblem.php?pid=6656 题意 给你n,q.表示有n ...

  3. 2019杭电多校第9场1002 Rikka with Cake HDU6681

    2019杭电多校第9场1002 Rikka with Cake HDU6681 题意:给你若干个点按上下左右切割平面,最后问平面内有几块被切割开来. 解法1:红黑树+思维+贪心 A:根据欧拉定理可以得 ...

  4. 【2019.08.21】2019杭电多校第十场

    补题地址:http://acm.hdu.edu.cn/listproblem.php?vol=58 题号:6691-6701 1001: 1002: 1003:✅ 1004: 1005:✅ 1006: ...

  5. 2019 杭电多校第六场 题解

    比赛记录 注意随机数据 ,1-n排列这种,一般都有啥暴力重构之类的方法,期望重构次数很少之类的 1005也是这样,因为n^2但只有n个值有数,所以就可以n^2logn 题解 1001 Salty Fi ...

  6. 2019杭电多校第三场 6608 Fansblog(威尔逊定理+miller_rabin素性测试)

    Problem Description 传送门 Farmer John keeps a website called 'FansBlog' .Everyday , there are many peo ...

  7. hdu 6656 2019杭电多校第7场 期望题

    设f[i]为从i升级到i+1期望需要的金钱,由于每级都是能倒退或者升级到i+1,所以询问从l,r的期望金钱可以直接前缀和,那么推导每一级升级需要的期望钱也可以用前缀和推导 设sum[i]=f[1]+f ...

  8. 2019杭电多校第7场 K Kejin Player HDU 6656(数学推导)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6656 题目大意:对于每一个等级,可以花ai元,有pi概率升级,如果升级失败就退到xi级,问从li级升到 ...

  9. 2019杭电多校第七场 HDU - 6656 Kejin Player 期望

    题目链接:https://vjudge.net/problem/HDU-6656 题解: 维护一个前缀sum[i] : 从1到 i 的期望 第 i 到达 i + 1是:ai + (1 - r[i] / ...

最新文章

  1. 领军筑梦 | 中建二局2022年春季校园招聘正式启动!
  2. SVN积极拒绝解决办法
  3. CRM问题:导入、导出实体错误
  4. 连接 insance 到 vlan101 - 每天5分钟玩转 OpenStack(97)
  5. SAP生产订单状态详解
  6. java 并发编程实例_Java并发编程案例解读
  7. Boost::context模块callcc的回声测试程序
  8. Hibernate单表开发步骤
  9. oracle 之 内存—鞭辟近里(一)
  10. scala方法中的变量_Scala变量,变量范围,字段变量,方法参数示例
  11. 老饼教你深入浅出理解-《牛顿法求极值》
  12. 创建数据库,库名为考生姓名拼音的缩写,例如考生姓名为张三
  13. 积分器-CD4066
  14. apple tv 开发_如何在Apple TV上重新排列,添加和删除频道
  15. 我的架构师之路——书单
  16. LINUX 下无线网卡 rtl8821CE/rtl8723de 驱动 无法驱动解决办法
  17. Windows10 去除各种不常用的右键菜单
  18. [小样本医学图像]Generalized Organ Segmentation by Imitating One-shot Reasoning using Anatomical Correlation
  19. c语言程序0xc0000005解决方案,应用程序无法正常启动0xc0000005如何解决
  20. new Date().getMonth() 的取值问题

热门文章

  1. Netbeans 7.0 安装 Python 插件的方法
  2. 在ssd上win10和linux双系统,windows 10 ssd ubuntu hdd双系统
  3. 某型车载导航软件测试
  4. 2022年11月多家权威机构____编程语言排行榜__薪酬状况
  5. 大型机汇编HLASM - HOOK ISPF命令START(一)
  6. 【转】关于usr/bin/ld: cannot find -lxxx问题总结
  7. java中PL层_JAVA PL
  8. Proteus8.9 VSM Studio SDCC编译器仿真STC15W4K32S4系列013_iic_03_AT24C08
  9. Zooming Slow-Mo: Fast and Accurate One-Stage Space-Time Video Super-Resolution---视频超分辨代码调试总结
  10. 阿里云倒逼亚马逊提高市场竞争?AWS CEO安迪·贾西谈量子计算与AI