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

题意:求对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. 关于vue2.0 cnpm 镜像安装

    前言:这几天安装vue环境一直报错,愁死我了,踩了好多坑,以前学的时候也安装成功了,后来很忙然后一直没顾上学vue,这么最近要学这个 在安装环境中平凡报错特此记笔记如下: 1.首先去下载node.js ...

  2. OGG初始加载过程概述

    您可以使用Oracle GoldenGate来: 执行独立的批量加载以填充数据库表以进行迁移或其他用途. 将数据作为初始同步运行的一部分加载到数据库表中,以准备与Oracle GoldenGate进行 ...

  3. Scrapy快速上手

    超详细官方教程解析 https://blog.csdn.net/fly_yr/article/details/51540269 实战过程: 创建一个Scrapy项目 定义提取的Item 编写爬取网站的 ...

  4. 设置LISTControl控件某一行的背景和文字颜色

    定义宏 用listcontrol的SetItemData设置某一行的属性,通过自定义属性标识实现. 自定义某行内容颜色属性: #define COLOR_DEFAULT 0 //默认颜色 #defin ...

  5. zynq linux驱动之PL-PS中断【转】

    转自:https://blog.csdn.net/h244259402/article/details/83993524 PC:Windows 10 虚拟机:ubuntu 16.04 vivado:2 ...

  6. mysql死锁-查询锁表进程-分析锁表原因【转】

    查询锁表进程: 1.查询是否锁表 show OPEN TABLES where In_use > 0;   2.查询进程     show processlist   查询到相对应的进程===然 ...

  7. java官网真不错

    要用到一个软件,打开时说没找到javaw,然后大家说这是因为没安装java,就按着链接去了java官网 https://www.java.com/zh_CN/download/faq/remove_o ...

  8. 《超越C++标准库:Boost库导引》:序

    序(Foreword) C++社区正在发生着一些美妙的事情.尽管C++仍然是世界上使用最广泛的编程语言,它依旧在变得更加强大而且易用.不信么?容我慢慢道来. 当前版本的标准C++是在1998年最终确定 ...

  9. Codeforces 914D - Bash and a Tough Math Puzzle 线段树,区间GCD

    题意: 两个操作, 单点修改 询问一段区间是否能在至多一次修改后,使得区间$GCD$等于$X$ 题解: 正确思路; 线段树维护区间$GCD$,查询$GCD$的时候记录一共访问了多少个$GCD$不被X整 ...

  10. 8-Images

    HTML Image Tags Tag Description <img> Defines an image <map> Defines an image-map <ar ...