E 洛谷 P3598 Koishi Loves Number Theory[数论]
题目描述
Koishi十分喜欢数论。
她的朋友Flandre为了检测她和数论是不是真爱,给了她一个问题。
已知
给定和个数,求对取模。
按照套路,呆萌的Koishi当然假装不会做了,于是她来向你请教这个问题,希望你能在秒内给她答案。
输入输出格式
输入格式:
第一行包含两个整数和,接下来一行个整数表示。
输出格式:
一个整数,表示答案
输入输出样例
3 5
1 2 4 5 0
44044
说明
表示若干个数的最小公倍数
对于10%的数据:
对于另外20%的数据:
对于另外30%的数据:
对于另外40%的数据:
标解:
先列两个结论
结论1可以考虑辗转相除法证明,结论2可以考虑lcm的积性求质因子贡献,这里不详细展开。
的范围很大,但它们的 数量很少。开一个map维护每个gcd和它的贡献就没了啊。
这两个结论怎么想出来啊啊啊啊
实现上好难,去请教了WerkeyTom_FTD %%%
就是用个map维护a的每个gcd出现的次数(上-下),加入一个数时,(a[i]+1)++,用a[i]+1与当前map里的gcd求gcd,次数取反就行了,然后更新答案
这里的x很大,所以一读入先%MOD;WerkeyTom_FTD还提到有可能x-1在MOD意义下没有逆元,可以先全乘MOD然后再做
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <map>
using namespace std;
typedef long long ll;
const int N=,MOD=1e9+;
inline ll read(){
char c=getchar();ll x=,f=;
while(c<''||c>''){if(c=='-')f=-; c=getchar();}
while(c>=''&&c<=''){x=x*+c-''; c=getchar();}
return x*f;
}
ll x,n,a[N];
inline ll gcd(ll a,ll b){return b==?a:gcd(b,a%b);}
map<ll,ll> mp,t;
map<ll,ll>::iterator it;
ll Pow(ll a,ll b){
ll ans=;
for(;b;b>>=,a=a*a%MOD)
if(b&) ans=ans*a%MOD;
return ans;
}
ll Inv(ll a){return Pow(a,MOD-);}
ll ans=;
void solve(){
for(int i=;i<=n;i++){ //printf("hi %d %d\n",i,a[i]);
t[a[i]]++;
ans=ans*(Pow(x,a[i])-)%MOD;//printf("ans %lld\n",ans);
for(it=mp.begin();it!=mp.end();it++){
ll _x=it->first,_y=it->second;
t[_x]+=_y;
ll nx=gcd(_x,a[i]),ny=-_y;
//printf("lala %d %d %d %d\n",_x,_y,nx,ny);
t[nx]+=ny;
if(ny>) ans=ans*Pow( Pow(x,nx)-, ny)%MOD;
else ans=ans*Pow( Inv(Pow(x,nx)-), -ny)%MOD;
//printf("ans %lld\n",ans);
}
swap(mp,t);t.clear();
}
ans=ans*Inv(x-)%MOD;
printf("%lld\n",ans);
}
int main(int argc, const char * argv[]) {
x=read()%MOD;n=read();
for(int i=;i<=n;i++) a[i]=read()+;
solve();
return ;
}
E 洛谷 P3598 Koishi Loves Number Theory[数论]的更多相关文章
- 洛谷P3602 Koishi Loves Segments(贪心,multiset)
洛谷题目传送门 贪心小水题. 把线段按左端点从小到大排序,限制点也是从小到大排序,然后一起扫一遍. 对于每一个限制点实时维护覆盖它的所有线段,如果超过限制,则贪心地把右端点最大的线段永远删去,不计入答 ...
- D 洛谷 P3602 Koishi Loves Segments [贪心 树状数组+堆]
题目描述 Koishi喜欢线段. 她的条线段都能表示成数轴上的某个闭区间.Koishi喜欢在把所有线段都放在数轴上,然后数出某些点被多少线段覆盖了. Flandre看她和线段玩得很起开心,就抛给她一个 ...
- C 洛谷 P3599 Koishi Loves Construction [构造 打表观察]
题目描述 Koishi决定走出幻想乡成为数学大师! Flandre听说她数学学的很好,就给Koishi出了这样一道构造题: Task1:试判断能否构造并构造一个长度为的的排列,满足其个前缀和在模的意义 ...
- luoguP3598 Koishi Loves Number Theory
题目 题解 等比数列,最后统一除以(x-1)(这里数据都存在逆元....) (不存在逆元可以考虑表示成:x*p^y的pair形式,最后上下把p的次数相减(类似扩展Lucas)) 求:lcm(x^(ai ...
- 洛谷P3602 Koishi Loves Segments 贪心
正解:贪心 解题报告: 传送门! 首先在学习贪心的入门题的时候我们就知道,当x=1的时候,也就是每条线段不能相交的时候的做法——就按右端点排序然后能选就选,也就是会议安排问题,原因显然?就你选右端点更 ...
- 洛谷P3599 Koishi Loves Construction 构造
正解:构造 解题报告: 传送门! 这题俩问嘛,就分成两个问题港QwQ 就按顺序趴,先港第一问QwQ 首先要发现,n在膜n意义下就是0嘛 那作为前缀和的话显然它就只能放在第一个 然后再想下,发现,如果n ...
- 洛谷 P1580 yyy loves Easter_Egg I
洛谷 P1580 yyy loves Easter_Egg I 题解: 队列+字符串 #include <cstdio> #include <string> #include ...
- 【BZOJ4026】dC Loves Number Theory 分解质因数+主席树
[BZOJ4026]dC Loves Number Theory Description dC 在秒了BZOJ 上所有的数论题后,感觉萌萌哒,想出了这么一道水题,来拯救日益枯竭的水题资源. 给 ...
- BZOJ_4026_dC Loves Number Theory _主席树+欧拉函数
BZOJ_4026_dC Loves Number Theory _主席树+欧拉函数 Description dC 在秒了BZOJ 上所有的数论题后,感觉萌萌哒,想出了这么一道水题,来拯救日益枯 竭 ...
随机推荐
- linux基本命令学习02
=============================================================================a.txtc:\abc\a.txt windo ...
- SpringMVC框架学习笔记(2)——使用注解开发SpringMVC
1.配置web.xml <servlet> <servlet-name>mvc</servlet-name> <servlet-class>org.sp ...
- 《图解http》知识点笔记
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica } p.p2 { margin: 0.0px 0.0px 0.0px 0. ...
- Spark性能调优之资源分配
Spark性能调优之资源分配 性能优化王道就是给更多资源!机器更多了,CPU更多了,内存更多了,性能和速度上的提升,是显而易见的.基本上,在一定范围之内,增加资源与性能的提升,是成正比的:写完了 ...
- MLlib--FPGrowth算法
转载请标明出处http://www.cnblogs.com/haozhengfei/p/c9f211ee76528cffc4b6d741a55ac243.html FPGrowth算法_挖掘商品之间的 ...
- dedecms环境优化
路径:dedecms/dede/templates/index_body.htm <script type="text/javascript">function sho ...
- 随手小代码——《Python编程 从入门到实践》项目1:外星人入侵
=================================版权声明================================= 版权声明:原创文章 禁止转载 请通过右侧公告中的“联系邮 ...
- CUDA共享内存的使用示例
CUDA共享内存使用示例如下:参考教材<GPU高性能编程CUDA实战>.P54-P65 教材下载地址:http://download.csdn.net/download/yizhaoyan ...
- visual studio 中无法删除项目或者文件
vs 2012添加新项目或者类库后,里边的class文件,我不想要,就把它删除.但是删除的时候,报如下图的错误,我删除新建的项目或类库的时候,也报类似的错误,怎么解决? window系统是新安装的.也 ...
- python_怎么格式化字符串?
案例: 如何对下面字典的key左对齐 {'dhqbl': 30, 'psfgj': 40, 'ontpqsb': 90, 'mrean': 110, 'klespjtr': 60, 'lprnkqhb ...