这道题告诉了我们一个很重要的道理:看到题,先想明白再动手!

题意:求对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的更多相关文章

  1. bzoj 1951 [Sdoi2010]古代猪文(数论知识)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1951 [思路] 一道优(e)秀(xin)的数论题. 首先我们要求的是(G^sigma{ ...

  2. 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 ...

  3. BZOJ 1951: [Sdoi2010]古代猪文 [Lucas定理 中国剩余定理]

    1951: [Sdoi2010]古代猪文 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 2194  Solved: 919[Submit][Status] ...

  4. bzoj 1951 [Sdoi2010]古代猪文 ——数学综合

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1951 数学综合题. 费马小定理得指数可以%999911658,又发现这个数可以质因数分解.所 ...

  5. bzoj 1951: [Sdoi2010]古代猪文

    #include<cstdio> #include<iostream> #include<cstring> #include<cmath> #defin ...

  6. BZOJ 1951 古代猪文

    快速幂+枚举质因数+欧拉定理+lucas定理+CRT. 注意两点: 1.if (n<m) C(n,m)=0. 2.这里0^0时应该return 0. #include<iostream&g ...

  7. 【BZOJ 1951】 [Sdoi2010]古代猪文

    Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...

  8. 【数学/扩展欧几里得/Lucas定理】BZOJ 1951 :[Sdoi 2010]古代猪文

    Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...

  9. BZOJ.1951.[SDOI2010]古代猪文(费马小定理 Lucas CRT)

    题目链接 \(Description\) 给定N,G,求\[G^{\sum_{k|N}C_n^k}\mod\ 999911659\] \(Solution\) 由费马小定理,可以先对次数化简,即求\( ...

随机推荐

  1. retrofit动态代理

    https://blog.csdn.net/dalong3976/article/details/83479816

  2. PTA 逆散列问题 (30 分)(贪心)

    题目链接:https://pintia.cn/problem-sets/1107178288721649664/problems/1107178432099737614 题目大意: 给定长度为 N 的 ...

  3. sublime text 3 左侧目录树中文文件夹显示方框问题解决

    0 - 解决方法 打开Preferences->Settings 在弹出的Settings对话框中,加入"dpi_scale": 1.0 重新启动sublime text 3 ...

  4. ubuntu16.04配置anaconda环境

    0 - 下载安装包 推荐到清华镜像下载.我选择的是Anaconda3-5.1.0-Linux-x86_64.sh. 1 - 安装Anaconda 然后切换到安装包目录,执行下面命令,期间一直按回车或者 ...

  5. jquery判断表单内容是否为空

    //判断表单数据是否为空 var t = $('form').serializeArray(); $.each(t,function(i,item){ if(item['value'] == '') ...

  6. oracle启用归档日志

    一.开启归档 1.查看归档信息 SQL> archive log list Database log mode No Archive Mode Automatic archival Disabl ...

  7. C++拷贝构造函数(深拷贝&浅拷贝)

    对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a=88; int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量.下面看一个类对象拷贝的简单例子. ...

  8. Linux就该这么学(1)-系统概述(学习笔记)

    一.热门的Linux系统开源许可协议 GNU GPL(GNU General Public License,GNU 通用公共许可证) BSD(Berkeley Software Distributio ...

  9. office 产品密钥

    刚买的小新,配置下office,作为技术人员,喜欢Share以下 office 产品密钥,任你选一组 一.序列号激活法(密钥激活法)这种是最为安全而且最为正规的方法,通过取得合法的序列号(密钥)进行激 ...

  10. 狼抓兔子 BZOJ- 1001 最小割

    https://www.lydsy.com/JudgeOnline/problem.php?id=1001 一个图,问你花费多少才能把到终点的所有边堵住... 就是求一个最小割,把$(1,1)$和$( ...