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 上所有的数论题后,感觉萌萌哒,想出了这么一道水题,来拯救日益枯 竭 ...
随机推荐
- vuethink 在本地没问题,在服务器报错 , php5.6与php5.5之间的大坑
将环境换为php5.6即可
- ios知识点总结——UITableView的展开与收缩及横向Table
UITableVIew是iOS开发中使用最为广泛的一种控件,对于UITableView的基本用法本文不做探讨,本文主要是针对UITableView的展开与收缩进行阐述,在文章的后面也会探讨一下横向ta ...
- linux下用iptables做本机端口转发方法(转载)
一 :从一台机到另一台机端口转发 启用网卡转发功能 #echo 1 > /proc/sys/net/ipv4/ip_forward 举例:从192.168.0.132:21521(新端口)访问1 ...
- android项目红色感叹号
Project --> Clean 清理一下,一般要注意的,如果是你的项目文件有错误,特别是xml文件,清理后那个R资源文件会不见的,那就需要你把错误修正后自动生成的.
- 详解python中的__init__与__new__方法
一.__init__和__new__方法执行的顺序? 在面向对象中介绍了关于对象创建的过程,我们知道__new__方法先于__init__方法执行. 二.__new__方法是什么? 首先,我们先来看下 ...
- rsync学习笔记
转载地址:http://www.cnblogs.com/maxincai/p/5142245.html rsync同步工具 1.rsync介绍 rsync是一款开源的.快速的.多功能的.可实现全量及增 ...
- js截取字符串的方法
1,slice(a, b) 第一个参数表示起始位置,第二个表示截取到但不包含 关于参数正负问题,只要记住一点:永远不能倒着截取!否则返回空字符串 2,substring(a, b) 第一个参数表示起始 ...
- (1-1)SpringCloud-Eureka:服务的注册与发现
SpringCloud Eureka是SpringCloud Netflix服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理功能.下面来做一个示例 ...
- centos如何安装python库?
通过yum install安装,先解决yum不能安装python库的问题 yum install -y epel-release #先安装epel源,参考http://sharadchhetri. ...
- python_6_字符串
什么是字符串? --一般用户输入数据和一堆有意义或者没有意义的文字符号组合 对字符串有哪些操作? --字符串本身不能修改,可以切片,可以读取 -- .capitalize() ...