洛谷P2480 [SDOI2010]古代猪文(卢卡斯定理+中国剩余定理)

传送门

 

好吧我数学差的好像不是一点半点……

题目求的是$G^{\sum_{d|n}C^d_n}mod\ 999911659$

我们可以利用费马小定理$a^{k}\equiv a^{k\ mod\ (p-1)}(mod\ p)$

然后组合数可以直接用Lucas搞

那么就做完啦

然而$p-1$并不是质数orz,费马小定理不能用

那么我们考虑把$p-1$分解质数,$999911658=2*3*4679*35617$

我们先用Lucas定理分别算出对这四个数取模的答案,然后得到四个线性同余方程

然后直接用中国剩余定理解出答案就好了(然而我并不会中国剩余定理orz)

 1 //minamoto
 2 #include<cstdio>
 3 #define ll long long
 4 using namespace std;
 5 const int mod=999911658;
 6 ll n,G,val,fac[50005],a[4],b[]={2,3,4679,35617};
 7 inline ll ksm(ll x,ll y,ll p){
 8     ll res=1;
 9     while(y){
10         if(y&1) res=res*x%p;
11         x=x*x%p,y>>=1;
12     }
13     return res;
14 }
15 inline void init(ll p){
16     fac[0]=1;
17     for(int i=1;i<=p;++i)
18     fac[i]=fac[i-1]*i%p;
19 }
20 inline ll C(ll n,ll m,ll p){
21     if(n<m) return 0;
22     return fac[n]*ksm(fac[m],p-2,p)%p*ksm(fac[n-m],p-2,p)%p;
23 }
24 ll Lucas(ll n,ll m,ll p){
25     if(n<m) return 0;if(!n) return 1;
26     return Lucas(n/p,m/p,p)*C(n%p,m%p,p)%p;
27 }
28 inline void CRT(){
29     for(int i=0;i<4;++i)
30     val=(val+a[i]*(mod/b[i])%mod*ksm(mod/b[i],b[i]-2,b[i]))%mod;
31 }
32 int main(){
33     scanf("%lld%lld",&n,&G);
34     if(G%(mod+1)==0) return puts("0"),0;
35     for(int k=0;k<4;++k){
36         init(b[k]);
37         for(ll i=1;i*i<=n;++i)
38         if(n%i==0){
39             a[k]=(a[k]+Lucas(n,i,b[k]))%b[k];
40             if(i*i!=n) a[k]=(a[k]+Lucas(n,n/i,b[k]))%b[k];
41         }
42     }
43     CRT();
44     printf("%lld\n",ksm(G,val,mod+1));
45     return 0;
46 }

 

转载于:https://www.cnblogs.com/bztMinamoto/p/9725182.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java学习(5):全局变量和局部变量

public class qulitity{ static int num125; public static void main(String[] args){ System.out.println(“全局变量的值为”num1); int num212; System.out.println(num2); Test(); } public static void Test(){ int num21000; System.out.println(num2); } }

C语言知识点笔记完全整理

这个大长篇相当于是自己对于c语言学习的一个总结&#xff0c;会持续更新完善。 后续会在寒假整理一些经典的例题附带题解&#xff0c;当然希望我学到的东西、总结的经验&#xff0c;能够给后来者提供一个更好的学习途径&#xff0c;从入门到精通而不再是放弃。 也欢迎读者提出…

ajax 微信code获取_获取链接的参数,判断是否是微信打开,ajax获取数据

//获取链接参数function GetQueryString(name) {var reg new RegExp("(^|&)" name "([^&]*)(&|$)");var r window.location.search.substr(1).match(reg);if (r ! null) return unescape(r[2]); return null;}function is_weixin() {var u…

[HAOI2016]食物链

题目描述 如图所示为某生态系统的食物网示意图&#xff0c;据图回答第1小题现在给你n个物种和m条能量流动关系&#xff0c;求其中的食物链条数。物种的名称为从1到n编号M条能量流动关系形如a1 b1a2 b2a3 b3......am-1 bm-1am bm其中ai bi表示能量从物种ai流向物种bi,注意单独的…

java学习(6):数据类型

public class Shortdata{ public static void main(String[] args){ byte by 45; short sho 32767; System.out.println(“sho的值是”sho); //获取最大值 System.out.println(Byte.MAX_VALUE); System.out.println(Short.MAX_VALUE); //获取最小值System.out.println(Byte.M…

Xcode添加pch文件

1.打开Xcode工程. 在Supporting Files目录下,选择 File > New > File > iOS > Other > PCH File 然后点击下一步&#xff1b; 2.如果项目名称为Demo, PCH 文件的名字为Test.pch,然后创建&#xff1b;3.选择 PCH 文件创建Test.pch文件4.找到 Project > Build …

共轭方式怎么判断_怎样判断共轭双烯

本章重点共轭二烯烃的结构,共轭二烯烃的性质及制法,共轭 效应及其相对强弱。 本章难点共轭二烯烃的结构和性质,共轭效应及其相对强弱,周 环反应及共振论的概念。 ...第六章 烯烃 共轭二烯烃 1 分类 命名 6.1.1二烯烃的分类 二烯烃包括...6-3 共轭二烯烃 一. 二烯烃的分类、命名…

java学习(7):巩固练习

//任务1 //使用记事本或其他文本编辑器编写一个java控制台程序&#xff0c;定义一个包含main方法的java类&#xff0c;在main方法中使用合适的数据类型定义如下局部变量&#xff0c;标识符要严格遵守java规范。 //学生姓名&#xff1b;学生年龄&#xff1b;学生身高&#xff0c…

js fn无法访问,不报错

GD_List.prototype.test function(){}无法访问&#xff0c;浏览器console不报错。 附带条件&#xff1a; 1.其它某些fn能访问。 2.test是放在某些fn中的。 错误原因&#xff1a;fn命名冲突&#xff08;存放test&#xff09;&#xff0c;js调用了另外一个同名fn&#xff08;没存…

unionall mysql_5分钟了解MySQL5.7union all用法的黑科技

wKiom1f8bNajxqWNAAA4eVx2Dz8965.jpgwKioL1f8bNbCZ-bgAAA4pG6yXEQ597.jpgMySQL5.7union all用法的黑科技union all在MySQL5.6下的表现Part1:MySQL5.6.25[rootHE1 ~]# mysql -uroot -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL conn…

java学习(8):巩固练习

//任务2 编写控制台程序将以下给定的整数常量用合适的变量接收并将其10进制值与二进制表示形式分别输出打印在控制台界面 //55&#xff1b;666&#xff1b;1080&#xff1b;2500&#xff1b;78451&#xff1b; public class test02{ public static void main(String[] args){ /…

微信公众号开发经验总结

微信公众号开发经验总结 1. 快捷访问 1.1 测试公众号注册&#xff1a; http://mp.weixin.qq.com/debug/cgi-bin/sandbox?tsandbox/login 1.2 微信公众号开发指南&#xff1a; https://mp.weixin.qq.com/wiki?tresource/res_main&idmp1445241432 1.3 …

java学习(9):巩固练习

/** 任务 3 根据视频教学编写一个java控制台程序使用正确方式定义 #静态变量或静态常量存储以下描述的数据并在控制台界面打印这些数据&#xff0c; #并书写标准文档&#xff0c;方法&#xff0c;及相关注释&#xff1a; #一年之中季节有几个&#xff1b; #一个星期有几天&…

mysql 分页算法_MySQL高效的分页算法

PERCONA PERFORMANCE CONFERENCE 2009上&#xff0c;来自雅虎的几位工程师带来了一篇”Efficient Pagination Using MySQL“的报告&#xff0c;有很多亮点&#xff0c;本文是在原文基础上的进一步延伸。首先看一下分页的基本原理&#xff1a;mysql> explain SELECT * FROM m…

java学习(10):数据类型

对于java的数据类型&#xff0c;既熟悉又陌生&#xff0c;于是整理了这篇文档。 最近的面试让我开始注意细节&#xff0c;细节真的很重要。 首先&#xff0c;我们知道在JAVA中一共有八种基本数据类型&#xff0c;他们分别是 byte、short、int、long、float、double、char、bool…

wordpress安装_WordPress第三课:使用SOFTACULOUS安装WORDPRESS

在精简的过程中&#xff0c;你会发现你更加明确想要什么&#xff01;目标变得明确&#xff0c;生活也将变得清晰。安装WordPress最简单的方法是使用自动安装程序&#xff0c;这是一个特殊的工具&#xff0c;可以在你的网站上安装程序。大多数虚拟主机都会提供一个自动安装程序作…

java学习(11):Java数据类型转换

&#xff08;自动转换和强制转换&#xff09; 数据类型的转换&#xff0c;分为自动转换和强制转换。自动转换是程序在执行过程中“悄然”进行的转换&#xff0c;不需要用户提前声明&#xff0c;一般是从位数低的类型向位数高的类型转换&#xff1b;强制类型转换则必须在代码中声…

java学习(12):i++和++i的区别

先上代码&#xff1a; public static void main(String args[]) { int A 1; int B 10; int C 100; int D 1000; System.out.println(A);System.out.println(B);System.out.println(C C);System.out.println(C);System.out.println(D D);System.out.println(D); }在来运行…

对于高维数组抽象性质的理解

对于数组的维数理解&#xff0c;应该清楚的认识到&#xff0c;一维数组是“线性的”的&#xff0c;二维数组是“平面”的&#xff0c;而三维数组时“立体”的&#xff0c;其不仅反映了其在计算机中物理储存层面上的描述&#xff0c;同时也表现了其抽象模型的性质&#xff0c;而…

java学习(13):scanner中的方法

//Scanner类中的方法 //优点一: 可以获取键盘输入的字符串 //优点二: 有现成的获取int,float等类型数据&#xff0c;非常强大&#xff0c;也非常方便&#xff1b; public static void ScannerTest(){ Scanner sc new Scanner(System.in); System.out.println(“ScannerTest, P…