bzoj 1951
这道题告诉了我们一个很重要的道理:看到题,先想明白再动手!
题意:求对999911659取模的值
首先,由于n的数据范围不是很大(至少不是很大),所以可以O()枚举所有约数分别求组合数
但是有个问题:根据费马小定理,
所以组合数应当对p-1取模!
可是p-1并不是一个质数啊
所以我们要将p-1质因子分解,发现可以分解成四个质数之积,那么我们用四次卢卡斯定理分别计算出四个结果再用中国剩余定理合并即可。
但我真正想说的是,如果做过礼物的话,很容易误以为这题要用拓展卢卡斯定理,然后写到死...
所以千万不要像我一样...
#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
#define mode 999911659
#define mo 999911658
#define ll long long
using namespace std;
ll inv[][];
ll mul[][];
ll mod[]={,,,,};
ll a[];
ll n,g;
ll pow_mul(ll x,ll y)
{
ll ans=;
while(y)
{
if(y%)
{
ans*=x;
ans%=mode;
}
x*=x;
x%=mode;
y/=;
}
return ans;
}
void init()
{
for(int i=;i<=;i++)
{
inv[][i]=inv[][i]=mul[][i]=mul[][i]=;
for(int j=;j<mod[i];j++)
{
inv[j][i]=(mod[i]-mod[i]/j)*inv[mod[i]%j][i]%mod[i];
}
for(int j=;j<mod[i];j++)
{
inv[j][i]=inv[j-][i]*inv[j][i]%mod[i];
mul[j][i]=mul[j-][i]*j%mod[i];
}
}
}
ll C(ll x,ll y,ll num)
{
if(x<y)
{
return ;
}else if(x==y)
{
return ;
}else if(x<mod[num])
{
return mul[x][num]*inv[y][num]%mod[num]*inv[x-y][num]%mod[num];
}else
{
return C(x/mod[num],y/mod[num],num)*C(x%mod[num],y%mod[num],num)%mod[num];
}
}
void ex_gcd(ll a,ll b,ll &x,ll &y)
{
if(b==)
{
x=;
y=;
return;
}
ex_gcd(b,a%b,x,y);
ll t=x;
x=y;
y=t-(a/b)*x;
}
ll china()
{
ll M=mo;
ll ans=;
for(int i=;i<=;i++)
{
ll M0=M/mod[i];
ll x,y;
ex_gcd(M0,mod[i],x,y);
x=(x%mod[i]+mod[i])%mod[i];
ans+=x*M0%mo*a[i]%mo;
}
return ans;
}
ll solve(ll x,ll y)
{
for(int i=;i<=;i++)
{
a[i]=C(x,y,i);
}
return china();
}
int main()
{
scanf("%lld%lld",&n,&g);
init();
ll s=;
for(int i=;i*i<=n;i++)
{
if(n%i==)
{
s+=solve(n,i);
s%=mo;
if(n/i!=i)
{
s+=solve(n,n/i);
}
} }
printf("%lld\n",pow_mul(g,s));
return ;
}
bzoj 1951的更多相关文章
- bzoj 1951 [Sdoi2010]古代猪文(数论知识)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1951 [思路] 一道优(e)秀(xin)的数论题. 首先我们要求的是(G^sigma{ ...
- 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]古代猪文 ——数学综合
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1951 数学综合题. 费马小定理得指数可以%999911658,又发现这个数可以质因数分解.所 ...
- bzoj 1951: [Sdoi2010]古代猪文
#include<cstdio> #include<iostream> #include<cstring> #include<cmath> #defin ...
- BZOJ 1951 古代猪文
快速幂+枚举质因数+欧拉定理+lucas定理+CRT. 注意两点: 1.if (n<m) C(n,m)=0. 2.这里0^0时应该return 0. #include<iostream&g ...
- 【BZOJ 1951】 [Sdoi2010]古代猪文
Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...
- 【数学/扩展欧几里得/Lucas定理】BZOJ 1951 :[Sdoi 2010]古代猪文
Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...
- BZOJ.1951.[SDOI2010]古代猪文(费马小定理 Lucas CRT)
题目链接 \(Description\) 给定N,G,求\[G^{\sum_{k|N}C_n^k}\mod\ 999911659\] \(Solution\) 由费马小定理,可以先对次数化简,即求\( ...
随机推荐
- G - Galactic Collegiate Programming Contest Kattis - gcpc (set使用)
题目链接: G - Galactic Collegiate Programming Contest Kattis - gcpc 题目大意:当前有n个人,一共有m次提交记录,每一次的提交包括两个数,st ...
- nodejs -Promise
创建一个 readFile.js,读取三个文件abc的内容并输出到控制台 var fs = require('fs') fs.readFile('./a.txt','utf-8',function ( ...
- [sklearn] 官方例程-Imputing missing values before building an estimator 随机填充缺失值
官方链接:http://scikit-learn.org/dev/auto_examples/plot_missing_values.html#sphx-glr-auto-examples-plot- ...
- SpringBoot编写自定义配置信息
⒈编写自定义配置类 1.浏览器配置 package cn.coreqi.security.properties; public class BrowserProperties { private St ...
- 【ARTS】01_13_左耳听风-20190204~20190210
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- 深度神经网络(DNN)是否模拟了人类大脑皮层结构?
原文地址:https://www.zhihu.com/question/59800121/answer/184888043 神经元 在深度学习领域,神经元是最底层的单元,如果用感知机的模型, wx + ...
- Hibernate search使用示例(基础小结-注解方式)
(对于项目环境配置,一直没怎么看过.这次经历里从基础环境搭建到hibernate search示例的完成) 1.首先创建project,选择了web project. 2.导入hibernate se ...
- MySQL--表操作(innodb表字段数据类型、约束条件)、sql_mode操作
一.创建表的完整语法 #[]内的可有可无,即创建表时字段名和类型是必须填写的,宽度与约束条件是可选择填写的.create table 表名(字段名1 类型[(宽度) 约束条件],字段名2 类型[(宽度 ...
- linux shell 数组建立及使用技巧
参考网址:http://www.cnblogs.com/chengmo/archive/2010/09/30/1839632.html linux shell在编程方面比windows 批处理强大太多 ...
- class, extends和super es6语法
摘自https://www.cnblogs.com/queende7/p/8668497.html,谢谢博主的分享!