bzoj 1951: [Sdoi2010]古代猪文
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#define ll long long
#define mul 999911659
using namespace std;
int n,g,a[];
int sh[]={,,,},C1[][];
void exgcd(int a1,int a2,int &x,int &y)
{
if(!a2)
{
x=;
y=;
return;
}
exgcd(a2,a1%a2,x,y);
int t=x;
x=y;
y=t-a1/a2*y;
}
int kuai(ll n,int k,int p)
{
int ans=;
for(;k;)
{
if(k%)
ans=(ans*n)%p;
n=(n*n)%p;
k/=;
}
return ans;
}
int C(int n,int m,int p)
{
if(n<m)
return ;
return C1[p][n]*kuai(C1[p][m]*C1[p][n-m],sh[p]-,sh[p])%sh[p];
}
int lucas(int n,int m,int p)
{
if(!m)
return ;
return (C(n%sh[p],m%sh[p],p)*lucas(n/sh[p],m/sh[p],p))%sh[p];
}
int solve()
{
int x,y,a1,b1,a2,b2;
a1=sh[];
b1=a[];
for(int i=;i<;i++)
{
a2=sh[i];
b2=a[i];
exgcd(a1,a2,x,y);
x=((b2-b1)*x%a2+a2)%a2;
b1=b1+x*a1;
a1=a1*a2;
}
return b1;
}
int main()
{
scanf("%d%d",&n,&g);
if(g==mul)
{
printf("0\n");
return ;
}
for(int i=;i<;i++)
{
C1[i][]=;
for(int j=;j<=sh[i];j++)
C1[i][j]=(C1[i][j-]*j)%sh[i];
}
for(int i=;i<=sqrt(n);i++)
if(n%i==)
{
for(int j=;j<;j++)
{
a[j]=(a[j]+lucas(n,i,j))%sh[j];
if(i!=n/i)
a[j]=(a[j]+lucas(n,n/i,j))%sh[j];
}
}
printf("%d\n",kuai(g,solve(),mul));
return ;
}
经典的数学题。。。。
题目就有点难懂,求G^M mod P M=∑ i|N C(N,i) P=999911659
用lucas定理,中国剩余定理合并模线性方程组。http://hzwer.com/4407.html
bzoj 1951: [Sdoi2010]古代猪文的更多相关文章
- BZOJ 1951: [Sdoi2010]古代猪文( 数论 )
显然答案是G^∑C(d,N)(d|N).O(N^0.5)枚举N的约数.取模的数999911659是质数, 考虑欧拉定理a^phi(p)=1(mod p)(a与p互质), 那么a^t mod p = a ...
- BZOJ 1951: [Sdoi2010]古代猪文 [Lucas定理 中国剩余定理]
1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 2194 Solved: 919[Submit][Status] ...
- 【刷题】BZOJ 1951 [Sdoi2010]古代猪文
Description "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" --选自猪王国民歌 很久 ...
- bzoj 1951 [Sdoi2010]古代猪文(数论知识)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1951 [思路] 一道优(e)秀(xin)的数论题. 首先我们要求的是(G^sigma{ ...
- bzoj 1951 [Sdoi2010]古代猪文 ——数学综合
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1951 数学综合题. 费马小定理得指数可以%999911658,又发现这个数可以质因数分解.所 ...
- BZOJ.1951.[SDOI2010]古代猪文(费马小定理 Lucas CRT)
题目链接 \(Description\) 给定N,G,求\[G^{\sum_{k|N}C_n^k}\mod\ 999911659\] \(Solution\) 由费马小定理,可以先对次数化简,即求\( ...
- bzoj 1951: [Sdoi2010]古代猪文 【中国剩余定理+欧拉定理+组合数学+卢卡斯定理】
首先化简,题目要求的是 \[ G^{\sum_{i|n}C_{n}^{i}}\%p \] 对于乘方形式快速幂就行了,因为p是质数,所以可以用欧拉定理 \[ G^{\sum_{i|n}C_{n}^{i} ...
- BZOJ 1951 [SDOI2010]古代猪文 (组合数学+欧拉降幂+中国剩余定理)
题目大意:求$G^{\sum_{m|n} C_{n}^{m}}\;mod\;999911659\;$的值$(n,g<=10^{9})$ 并没有想到欧拉定理.. 999911659是一个质数,所以 ...
- BZOJ 1951: [Sdoi2010]古代猪文 ExCRT+欧拉定理+Lucas
欧拉定理不要忘记!! #include <bits/stdc++.h> #define N 100000 #define ll long long #define ull unsigned ...
随机推荐
- epoll中et+多线程模式中很重要的EPOLL_ONESHOT实验
因为et模式需要循环读取,但是在读取过程中,如果有新的事件到达,很可能触发了其他线程来处理这个socket,那就乱了. EPOLL_ONESHOT就是用来避免这种情况.注意在一个线程处理完一个sock ...
- 在beforeAction里redirect无效,Yii2.0.8
我是在官方GitHub上得到回答,试了一下,确实解决问题了.之前的问题描述: 之前是2.0.3,然后用composer直接升级到2.0.8,就不正常了,以为是我代码的问题,于是再次尝试 用compos ...
- 关于图片加载非常爽的一个三方控件 fresco,一个三fresco
Hi EveryBody 今天来玩一个非常爽的控件 fresco 到底有多爽呢 接着看就知道了 首先 来看看fresco 是个神马东西 https://github.com/facebook/fre ...
- linux 跨IP拷贝命令 scp
原文:http://blog.csdn.net/mexican_jacky/article/details/52847094 scp -r ROOT/ tms2api@10.230.4.215:/Ja ...
- 如何定位摄像机,使物体在屏幕上始终具有相同的像素宽度和高度?(threes)
from How to position the camera so that the object always has the same pixel width and height on the ...
- 转:C/C++中,空数组、空类、类中空数组的解析及其作用
转自:http://blog.sina.com.cn/s/blog_93b45b0f01015s95.html 我们经常会遇到这些问题: (1)C++中定义一个空类,他们它的大小(sizeof) 为多 ...
- CI 学习笔记、记录
[ci框架]ci框架目录结构分析 分类: [CodeIgniter深入研究]2013-05-09 00:24 7420人阅读 评论(5) 收藏 举报 [php] view plaincopy mysh ...
- 深入理解JVM虚拟机-7虚拟机类加载机制
虚拟机把描述类的数据从Class文件夹加载到内存,并对数据进行小燕.转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制. 下面所说的Class文件不是具体的某个文件 ...
- 机器学习与R语言
此书网上有英文电子版:Machine Learning with R - Second Edition [eBook].pdf(附带源码) 评价本书:入门级的好书,介绍了多种机器学习方法,全部用R相关 ...
- 5-2-2 printf参数从右往左压栈
5-2-2 C中printf计算参数时是从右到左压栈的 #include <stdio.h> int main (int argc, char **argv) { ; ,,,,}; int ...