洛谷 [P2480] 古代猪文
卢卡斯定理
注意特判底数和模数相等的情况
http://www.cnblogs.com/poorpool/p/8532809.html
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#define ll long long
using namespace std;
const int MOD = 999911659;
ll n, g, p[5] = {0, 2, 3, 4679, 35617}, ans[5], fac[100000], ni[100000];
ll exgcd(ll a, ll b, ll & x, ll & y ){
if(!b) {
x = 1; y = 0;
return a;
}
ll t = exgcd(b, a % b, y, x);
y -= a / b * x;
return t;
}
ll getni(ll x, ll p) {
ll a, b;
exgcd(x, p, a, b);
(a += p) %= p;
return a;
}
ll lucas(ll a, ll b, ll p) {
if(a < b) return 0;
if(a < p) return fac[a] * ni[b] * ni[a - b] % p;
else return lucas(a % p, b % p, p) * lucas(a / p, b / p, p) % p;
}
void work(int x) {
memset(fac, 0, sizeof(fac));
memset(ni, 0, sizeof(ni));
fac[1] = fac[0] = ni[0] = ni[1] = 1;
for(int i = 2; i < p[x]; i++) fac[i] = fac[i - 1] * i % p[x];
for(int i = 2; i < p[x]; i++) ni[i] = (p[x] - p[x] / i) * ni[p[x] % i] % p[x];
for(int i = 2; i < p[x]; i++) (ni[i] *= ni[i - 1]) %= p[x];
ll i = 1ll;
for( ; i * i < n; i++) {
if(n % i == 0) {
ans[x] += lucas(n, i, p[x]);
//cout << ans[x] << endl;
ans[x] += lucas(n, n / i, p[x]);
//cout << ans[x] << endl;
ans[x] %= p[x];
//cout << ans[x] << endl;
}
}
if(i * i == n) ans[x] += lucas(n, i, p[x]);
//cout << ans[x] << endl;
//cout << endl;
ans[x] %= p[x];
}
ll CRT() {
ll M = MOD - 1;
ll rt = 0ll;
for(int i = 1; i <= 4; i++) {
rt += ans[i] * getni(M / p[i], p[i]) * (M / p[i]) % M;
}
//cout << rt << endl;
return rt % M;
}
ll quick_mod(ll a, ll k) {
ll ans = 1ll;
while(k) {
if(k & 1ll) (ans *= a) %= MOD;
(a *= a) %= MOD;
k >>= 1;
}
return ans;
}
int main() {
cin >> n >> g;
if(g == MOD) {printf("0\n");return 0;}
for(int i = 1; i <= 4; i++) {
work(i);
//cout << ans[i] << endl;
}
cout << quick_mod(g, CRT()) << endl;
return 0;
}
洛谷 [P2480] 古代猪文的更多相关文章
- 洛谷P2480 古代猪文
这道题把我坑了好久...... 原因竟是CRT忘了取正数! 题意:求 指数太大了,首先用欧拉定理取模. 由于模数是质数所以不用加上phi(p) 然后发现phi(p)过大,不能lucas,但是它是个sq ...
- 洛谷 P2480 [SDOI2010]古代猪文 解题报告
P2480 [SDOI2010]古代猪文 题目背景 "在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心--" ...
- 洛咕 P2480 [SDOI2010]古代猪文
洛咕 P2480 [SDOI2010]古代猪文 题目是要求\(G^{\sum_{d|n}C^d_n}\). 用费马小定理\(G^{\sum_{d|n}C^d_n\text{mod 999911658} ...
- 【题解】古代猪文 [SDOI2010] [BZOJ1951] [P2480]
[题解]古代猪文 [SDOI2010] [BZOJ1951] [P2480] 在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心 ...
- 【题解】P2480 [SDOI2010]古代猪文 - 卢卡斯定理 - 中国剩余定理
P2480 [SDOI2010]古代猪文 声明:本博客所有题解都参照了网络资料或其他博客,仅为博主想加深理解而写,如有疑问欢迎与博主讨论✧。٩(ˊᗜˋ)و✧*。 题目描述 猪王国的文明源远流长,博大精 ...
- P2480 [SDOI2010]古代猪文
P2480 [SDOI2010]古代猪文 比较综合的一题 前置:Lucas 定理,crt 求的是: \[g^x\bmod 999911659,\text{其中}x=\sum_{d\mid n}\tbi ...
- 【BZOJ1951】[SDOI2010]古代猪文
[BZOJ1951][SDOI2010]古代猪文 题面 bzoj 洛谷 题解 题目实际上是要求 $ G^{\sum d|n\;C_n^d}\;mod \; 999911659 $ 而这个奇怪的模数实际 ...
- 【BZOJ1951】古代猪文(CRT,卢卡斯定理)
[BZOJ1951]古代猪文(CRT,卢卡斯定理) 题面 BZOJ 洛谷 题解 要求什么很显然吧... \[Ans=G^{\sum_{k|N}{C_N^k}}\] 给定的模数是一个质数,要求解的东西相 ...
- luogu_2480: 古代猪文
洛谷:2480古代猪文 题意描述: 给定两个整数\(N,G\),求$G^{\sum_{k|n}C_n^k} mod 999911659 $. 数据范围: \(1\leq N\leq 10^9,1\le ...
随机推荐
- 4G 内存 怎么只有2.99G可用
32为系统只可以识别3.25G,而且有256M的内存被显卡共享显存了,所以只剩2,99G.
- Bootstrap历练实例:动画的进度条
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- C#MySQL增删改查
首先在项目中添加引用 using MySql.Data.MySqlClient; 连接字符串 private string connString="server=localhost;use ...
- CentOS7 中使用 firewall-cmd 控制端口和端口转发
0X00 firewalld 守护进程 firewall-cmd命令需要firewalld进程处于运行状态.我们可以使用systemctl status/start/stop/restart fire ...
- 51nod——1391 01串(字符串、前缀和)
好像这题是4级题下放2级? 预处理:求每个位置 x 左区间 [ 0 , x ] 中 1 比 0 多的数量和右区间 ( x , n - 1 ] 中 0 比 1 多的数量(少就是负的).相当于求两个前缀和 ...
- socketserver的使用
socketserver底层也是使用线程实现的并发,直接上代码 # server import socketserver ''' socketserver使用模式: 1 功能类 class Myser ...
- Linux实现内容分发的主备模式的智能DNS
BIND实现智能DNS的原理是通过view的方式,首先判断客户请求的来源,然后返回不同的IP 规划:为za.com域进行智能解析 分2个网段,192.168.1.0/24网段的请求解析到192.168 ...
- poj 1995 快速幂
题意:给出A1,…,AH,B1,…,BH以及M,求(A1^B1+A2^B2+ … +AH^BH)mod M. 思路:快速幂 实例 3^11 11=2^0+2^1+2^3 => 3^1*3 ...
- STW Family
序言 一次作业致使我们成为了一个团体,相聚即是缘分,让我们一起为STW绘制一幅完美的画卷,交一份满意的答卷. 这不是一个人的王者,是团队的荣耀. Team成员 队长:王筱哲 201631062220 ...
- python - 接口自动化测试 - contants - 常量封装
# -*- coding:utf-8 -*- ''' @project: ApiAutoTest @author: Jimmy @file: contants.py @ide: PyCharm Com ...