codeforces1493 D. GCD of an Array(数论)
昨天晚上用的镜像,看的B的图片瞬间不想写了(而且这周作业还没碰),不过看到D题突然想做做,于是有了下面的思路,写了一个小时,写完没交看了下榜单发现C题竟然过的人也不多,看了看C题感觉没啥思路就跑去补作业了~~
D. GCD of an Array
时间复杂度:O{(n+m)max(ai)logn}O\{(n+m)\sqrt{\max(a_i)}\log{n}\}O{(n+m)max(ai)logn}
#define IO ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr)
#pragma GCC optimize(2)
#include<set>
#include<map>
#include<iostream>
#include<algorithm>
using namespace std;
using ll=long long;
constexpr ll mod=1e9+7;
constexpr int N=200010;
int a[N],n,m;
ll d;
multiset<int> s[N];
map<int,int> mp[N];
ll qmi(ll a,ll b)
{ll res=1;while(b){if(b&1) res=res*a%mod;b>>=1;a=a*a%mod;}return res;
}
ll inv(ll x)
{return qmi(x,mod-2);
}
void insert(int k,int i,int cnt)
{if(mp[k].count(i)){if(s[i].size()==n) d=d*inv(qmi(i,*s[i].begin()))%mod;s[i].erase(s[i].find(mp[k][i]));mp[k][i]=mp[k][i]+cnt;s[i].insert(mp[k][i]);if(s[i].size()==n) d=d*qmi(i,*s[i].begin())%mod;}else{mp[k][i]=cnt;s[i].insert(mp[k][i]);if(s[i].size()==n) d=d*qmi(i,*s[i].begin())%mod;}
}
void divide(int k,int x)
{for(int i=2;i<=x/i;i++)if(x%i==0){int cnt=0;while(x%i==0) x/=i,cnt++;insert(k,i,cnt);}if(x>1) insert(k,x,1);
}
int main()
{IO;cin>>n>>m;for(int i=1;i<=n;i++) cin>>a[i];d=1;for(int i=1;i<=n;i++) divide(i,a[i]);while(m--){int i,x;cin>>i>>x;divide(i,x);cout<<d<<'\n';}return 0;
}
codeforces1493 D. GCD of an Array(数论)相关推荐
- CF1471 D - Strange Definition(思维,分类讨论,lcm,gcd的性质,数论)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #694 (Div. 2) D 很好的一道数论思维题 D - Str ...
- [GDUT 决赛]--GCD,LCM——我是好人(数论)
Description 众所周知,我是好人! 所以不会出太难的题,题意很简单 给你两个数n和m,问你有多少对正整数对最大公约数是n,最小公倍数是m 最后友情提供解题代码(我真是太好人了) void s ...
- F - GCD or MIN(数论)
F - GCD or MIN 首先gcd(x,y)≤min(x,y)\gcd(x,y)\leq \min(x,y)gcd(x,y)≤min(x,y) 数组中任意2个数的gcd可能是一种方案,任意3 ...
- GCD与LCM【数论】
题目大意: 给出两个数的GCDGCD和LCMLCM,求这两个数的最小差值. IuputIuput 6 36 OutputOutput 6 思路: 一道数论题. 我们设这两个数分别为xx和yy且x≤yx ...
- Codeforces Round #705 (Div. 2) D. GCD of an Array 质因子分解 + stl维护
传送门 题意: 给nnn个数,让后qqq个操作,每次选择一个位置的数使其乘xxx,每次询问后输出所有数的gcdgcdgcd. 思路: 这个题思路算是比较好想的.首先就是一个计算方式即计算所有数的gcd ...
- 【数论Day1】 最大公约数(gcd)题目
20170529-3数论_gcd 题解: http://www.cnblogs.com/ljc20020730/p/6919116.html 日期 序号 题目名称 输入文件名 输出文件名 时限 内存 ...
- TYUT-A专题题解(二)
TYUT-A专题题解(一) TYUT-A专题题解(二) 36暴力枚举 AOJ0008 Sum of 4 Integers[暴力]_海岛Blog-CSDN博客 HDU1407 测试你是否和LTC水平一样 ...
- Codeforces Round #705 (Div. 2) A-D
明显感觉到码力下降了 需要老年人康复训练计划 这场码力比较大 需要思维比较巧来减少码力 算是少见的cf div2了 A. Anti-knapsack 给你 nnn 和 kkk ,问是否有办法找出最大的 ...
- 2018CCPC桂林站题解(D G H J L)
题目链接:http://codeforces.com/gym/102823 问题 D: Bits Reverse 时间限制: 1 Sec 内存限制: 128 MB 提交: 167 解决: 127 ...
最新文章
- UOJ【UR #12】实验室外的攻防战
- 【Android工具】更新手机视频流媒体客户端播放器OPlayer
- (转贴) C#编码标准--编码习惯
- PAT天梯赛L3-004 肿瘤诊断
- 厦门银行服务器没有收到证书,FRM证书申请成功后,一直未收到证书该如何做?...
- QuickBI助你成为分析师——计算字段功能
- Elasticsearch 参考指南(引导检查)
- 设计模式:个人理解关于代理和委托模式的一点区别
- mysql relay log 查看_Mysql-relay log
- 【BZOJ4972】小Q的方格纸 前缀和
- android 无线传递文件夹,android 通过WIFI实现文件传输
- 给一整型变量a,写两段代码,第一个设置a的bit3,第二个清除a的bit3.“a的bit3”
- 最小树形图-hdu4966
- Mac Xcode 各种缓存清理
- android rsa加密工具类,GitHub - Lerist/encrypt: Android 加密解密工具包。
- tbox系统启动过程分析及优化
- 我想成为一名黑客,该如何开始?
- python医疗影像_基于PyRadiomics的医疗影像纹理获取原型系统集成
- BootLoader、Linux Kernel(linux内核)、RootFile(根文件系统)
- 你准备会计初级并通过考试用了多久?
热门文章
- linux中wine yum安装,分享|在基于RedHat或Debian的系统上安装 Wine 1.7
- 算法设计与分析——贪心算法——汽车加油问题
- 算法设计与分析——回溯法——n皇后问题
- java char short区别_java 彻底理解 byte char short int float long double
- 101. 对称二叉树023(BFS)
- 『软件工程9』结构化系统分析——解决软件“做什么”问题
- [JavaWeb-JavaScript]JavaScript运算符
- [蓝桥杯][算法提高VIP]数的划分-dp
- AcWing 1113. 红与黑
- 快速排序在最坏的情况下时间复杂度(Ω(nlgn)(算法导论第三版9.3-3))