题目大意:求

\[G^{\sum\limits_{d|N}\binom{n}{k}} mod\ \ 999911659
\]

题解:卢卡斯定理+中国剩余定理

利用卢卡斯定理求出指数和式对各个素模数的解,再利用中国剩余定理合并四个解即可。

也可以在枚举 N 的因子的过程中,对于计算的四个解直接进行中国剩余定理的合并,答案不变。

代码如下

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long LL;
  4. const LL mod = 999911658;
  5. const LL md[] = {2, 3, 4679, 35617};
  6. const int maxn = 40000;
  7. LL fac[maxn];
  8. inline LL fpow(LL a, LL b, LL c) {
  9. LL ret = 1 % c;
  10. for (; b; b >>= 1, a = a * a % c) {
  11. if (b & 1) {
  12. ret = ret * a % c;
  13. }
  14. }
  15. return ret;
  16. }
  17. inline LL comb(LL x, LL y, LL p) {
  18. if (y > x) {
  19. return 0;
  20. }
  21. return fac[x] * fpow(fac[x - y], p - 2, p) % p * fpow(fac[y], p - 2, p) % p;
  22. }
  23. LL Lucas(LL x, LL y, LL p) {
  24. if (y == 0) {
  25. return 1;
  26. }
  27. return Lucas(x / p, y / p, p) * comb(x % p, y % p, p) % p;
  28. }
  29. LL CRT(vector<LL> &v) {
  30. LL ret = 0;
  31. for (int i = 0; i < 4; i++) {
  32. ret = (ret + mod / md[i] * fpow(mod / md[i], md[i] - 2, md[i]) % mod * v[i] % mod) % mod;
  33. }
  34. return ret;
  35. }
  36. int main() {
  37. ios::sync_with_stdio(false);
  38. cin.tie(0), cout.tie(0);
  39. LL n, G;
  40. cin >> n >> G;
  41. if (G % (mod + 1) == 0) {
  42. cout << 0 << endl;
  43. return 0;
  44. }
  45. vector<LL> v;
  46. for (int i = 0; i < 4; i++) {
  47. LL res = 0;
  48. fac[0] = 1;
  49. for (int j = 1; j < 35617; j++) {
  50. fac[j] = fac[j - 1] * j % md[i];
  51. }
  52. for (int j = 1; j <= sqrt(n); j++) {
  53. if (n % j == 0) {
  54. res = (res + Lucas(n, n / j, md[i])) % md[i];
  55. if (j * j != n) {
  56. res = (res + Lucas(n, j, md[i])) % md[i];
  57. }
  58. }
  59. }
  60. v.push_back(res);
  61. }
  62. LL p = CRT(v);
  63. cout << fpow(G, p, mod + 1) << endl;
  64. return 0;
  65. }
  66. /*
  67. 2
  68. 3
  69. 4679
  70. 35617
  71. */

【洛谷P2480】古代猪文的更多相关文章

  1. 洛谷P2480 古代猪文

    这道题把我坑了好久...... 原因竟是CRT忘了取正数! 题意:求 指数太大了,首先用欧拉定理取模. 由于模数是质数所以不用加上phi(p) 然后发现phi(p)过大,不能lucas,但是它是个sq ...

  2. 洛谷 [P2480] 古代猪文

    卢卡斯定理 注意特判底数和模数相等的情况 http://www.cnblogs.com/poorpool/p/8532809.html #include <iostream> #inclu ...

  3. 洛谷 P2480 [SDOI2010]古代猪文 解题报告

    P2480 [SDOI2010]古代猪文 题目背景 "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" ...

  4. 洛咕 P2480 [SDOI2010]古代猪文

    洛咕 P2480 [SDOI2010]古代猪文 题目是要求\(G^{\sum_{d|n}C^d_n}\). 用费马小定理\(G^{\sum_{d|n}C^d_n\text{mod 999911658} ...

  5. 【题解】古代猪文 [SDOI2010] [BZOJ1951] [P2480]

    [题解]古代猪文 [SDOI2010] [BZOJ1951] [P2480] 在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心 ...

  6. 【题解】P2480 [SDOI2010]古代猪文 - 卢卡斯定理 - 中国剩余定理

    P2480 [SDOI2010]古代猪文 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 猪王国的文明源远流长,博大精 ...

  7. P2480 [SDOI2010]古代猪文

    P2480 [SDOI2010]古代猪文 比较综合的一题 前置:Lucas 定理,crt 求的是: \[g^x\bmod 999911659,\text{其中}x=\sum_{d\mid n}\tbi ...

  8. 【BZOJ1951】[SDOI2010]古代猪文

    [BZOJ1951][SDOI2010]古代猪文 题面 bzoj 洛谷 题解 题目实际上是要求 $ G^{\sum d|n\;C_n^d}\;mod \; 999911659 $ 而这个奇怪的模数实际 ...

  9. 【BZOJ1951】古代猪文(CRT,卢卡斯定理)

    [BZOJ1951]古代猪文(CRT,卢卡斯定理) 题面 BZOJ 洛谷 题解 要求什么很显然吧... \[Ans=G^{\sum_{k|N}{C_N^k}}\] 给定的模数是一个质数,要求解的东西相 ...

  10. luogu_2480: 古代猪文

    洛谷:2480古代猪文 题意描述: 给定两个整数\(N,G\),求$G^{\sum_{k|n}C_n^k} mod 999911659 $. 数据范围: \(1\leq N\leq 10^9,1\le ...

随机推荐

  1. [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar中的类解压后放在运行jar中

    前文: [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar打在jar包中 使用7z打开压缩包,查看所有依赖的jar都被解压以包名及class的方式存储在了运行jar中,此时jar的 ...

  2. 注解@PostConstruct与@PreDestroy详解及实例

    Java EE5 引入了@PostConstruct和@PreDestroy这两个作用于Servlet生命周期的注解,实现Bean初始化之前和销毁之前的自定义操作.此文主要说明@PostConstru ...

  3. Thinking In Java 4th Chap3 操作符

    若String后接一‘+’运算符,其后元素自动转化为String类型 注意:若对对象赋值另一对象,操作对应的是引用,如c=d,则c和d都指向原来d指向的对象 生成随机数:Random rand=new ...

  4. python学习-9 pycharm的安装

    1.python 开发IDE :  pycharm.eclipse等等 安装: 百度搜索pycharm 就可以了,去官网下载专业版.(百度有各种破解方法)                    #不要 ...

  5. 下载HTMLTestRunner 地址

    通过pip安装 HTMLTestRunne失败 则需要通过手动下载.  下载地址: http://tungwaiyip.info/software/HTMLTestRunner.html 下载后,把H ...

  6. python — 表的操作(一)

    1. 创建表 创建表: create table t1 (id int,name char(4)); create table t2 (id int,name char(4)) engine=myis ...

  7. vue插件总结——总有你能用上的插件

    UI组件 框架 element - 饿了么出品的Vue2的web UI工具套件 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开源 UI 组件库 Keen-UI - ...

  8. 怎样启动Nginx并设置开机自动运行

    1. 启动 sudo systemctl start nginx.service 2. 设置开机自动运行 sudo systemctl enable nginx.service

  9. fragment概念理解

    fragment概念理解知识,fragment概念理解图片 fragment概念理解内容,fragment概念理介绍,fragment概念理正文 Fragment是Android honeycomb ...

  10. window上mongoDB的安装及常用mongodb命令

    前几天在学习node操作数据库时使用的mongoDB数据库,今天来对mongodb的安装过程及配置以及后面需要使用的一些常用命令做一下总结. 安装MongoDB (可参考菜鸟教程中的安装步骤) 首先, ...