gcd,lcm,ext_gcd,inv
Least Common Multiple http://acm.hdu.edu.cn/showproblem.php?pid=1019
#include<cstdio>
int gcd(int a,int b){
return b?gcd(b,a%b):a;
}
int lcm(int a,int b){
return a/gcd(a,b)*b;
}
int main(){
int n,m,ans,x;
while(~scanf("%d",&n)){
while(n--){
ans=;
scanf("%d",&m);
while(m--){
scanf("%d",&x);
ans=lcm(ans,x);
}
printf("%d\n",ans);
}
}
return ;
}
Turn the pokers http://acm.hdu.edu.cn/showproblem.php?pid=4869
#include<cstdio>
#include<algorithm>
using namespace std;
typedef __int64 LL;
const int M=;
const int mod=;
int ext_gcd(int a,int b,int &x,int &y){//扩展gcd d=gcd(a,b)=a*x+b*y; return d,x,y;
int t,ret;
if(!b){
x=;
y=;
return a;
}
ret=ext_gcd(b,a%b,x,y);
t=x;
x=y;
y=t-a/b*y;
return ret;
}
int inv(int a,int b,int c){//ext_gcd求逆元 (b/a)%c
int x,y;
ext_gcd(a,c,x,y);
return (1LL*x*b%c+c)%c;
}
LL C[M];
LL INV[M];
int main() {
for(int i=; i<M; i++) {
INV[i]=inv(i,,mod);
}
int n,m,a;
while(~scanf("%d%d",&n,&m)) {
C[]=;
for(int i=;i<=m;i++){
C[i]=C[i-]*(m-i+)%mod*INV[i]%mod;
}
int L=,R=,nl,nr,tmp;
for(int i=;i<n;i++){
scanf("%d",&a);
tmp=min(m-L,a);
nr=L+tmp-(a-tmp);
tmp=min(R,a);
nl=R-tmp+(a-tmp);
if(nl>nr) swap(nl,nr);
if(L<=a&&a<=R){
if(L%==a%){
nl=;
}
else{
nl=min(nl,);
}
}
if((m-R)<=a&&a<=(m-L)){
if((m-L)%==a%){
nr=m;
}
else{
nr=max(nr,m-);
}
}
if(L>=a) nl=min(nl,L-a);
if(m-R>=a) nr=max(nr,R+a);
L=nl;
R=nr;
}
int ans=;
for(int i=L;i<=R;i+=){
ans+=C[i];
ans%=mod;
}
printf("%d\n",ans);
}
return ;
}
#include<cstdio>
#include<algorithm>
using namespace std;
typedef __int64 LL;
const int M=;
const int mod=;
LL C[M];
LL INV[M];
void inv_init(){//初始化%mod的乘法逆元
INV[]=;
for(int i=;i<M;i++){
INV[i]=INV[mod%i]*(mod-mod/i)%mod;
}
}
int main() {
inv_init();
int n,m,a;
while(~scanf("%d%d",&n,&m)) {
C[]=;
for(int i=;i<=m;i++){
C[i]=C[i-]*(m-i+)%mod*INV[i]%mod;
}
int L=,R=,nl,nr,tmp;
for(int i=;i<n;i++){
scanf("%d",&a);
tmp=min(m-L,a);
nr=L+tmp-(a-tmp);
tmp=min(R,a);
nl=R-tmp+(a-tmp);
if(nl>nr) swap(nl,nr);
if(L<=a&&a<=R){
if(L%==a%){
nl=;
}
else{
nl=min(nl,);
}
}
if((m-R)<=a&&a<=(m-L)){
if((m-L)%==a%){
nr=m;
}
else{
nr=max(nr,m-);
}
}
if(L>=a) nl=min(nl,L-a);
if(m-R>=a) nr=max(nr,R+a);
L=nl;
R=nr;
}
int ans=;
for(int i=L;i<=R;i+=){
ans+=C[i];
ans%=mod;
}
printf("%d\n",ans);
}
return ;
}
end
gcd,lcm,ext_gcd,inv的更多相关文章
- HDU4497 GCD and LCM(数论,质因子分解)
HDU4497 GCD and LCM 如果 \(G \% L != 0\) ,那么输出 \(0\) . 否则我们有 \(L/G=(p_1^{r_1})\cdot(p_2^{r_2})\cdot(p_ ...
- HDU 4497 GCD and LCM (数学,质数分解)
题意:给定G,L,分别是三个数最大公因数和最小公倍数,问你能找出多少对. 析:数学题,当时就想错了,就没找出规律,思路是这样的. 首先G和L有公因数,就是G,所以就可以用L除以G,然后只要找从1-(n ...
- 【基础数学】质数,约数,分解质因数,GCD,LCM
1.质数: 质数(prime number)又称素数,有无限个.一个大于1的自然数,除了1和它本身外,不能整除以其他自然数(质数),换句话说就是该数除了1和它本身以外不再有其他的因数. 2.约数: 如 ...
- SPOJ LGLOVE 7488 LCM GCD Love (区间更新,预处理出LCM(1,2,...,n))
题目连接:http://www.spoj.com/problems/LGLOVE/ 题意:给出n个初始序列a[1],a[2],...,a[n],b[i]表示LCM(1,2,3,...,a[i]),即1 ...
- ACM数论之旅3---最大公约数gcd和最小公倍数lcm(苦海无边,回头是岸( ̄∀ ̄))
gcd(a, b),就是求a和b的最大公约数 lcm(a, b),就是求a和b的最小公倍数 然后有个公式 a*b = gcd * lcm ( gcd就是gcd(a, b), ( •̀∀•́ ) ...
- 数学--数论--HDU 5382 GCD?LCM?(详细推导,不懂打我)
Describtion First we define: (1) lcm(a,b), the least common multiple of two integers a and b, is the ...
- LightOj 1236 - Pairs Forming LCM (分解素因子,LCM )
题目链接:http://lightoj.com/volume_showproblem.php?problem=1236 题意:给你一个数n,求有多少对(i, j)满足 LCM(i, j) = n, ...
- GCD SUM 强大的数论,容斥定理
GCD SUM Time Limit: 8000/4000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) SubmitStatu ...
- OC 线程操作 - GCD使用 -同步函数,异步函数,串行队列,并发队列
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ // GCD 开几条线程并不是我们 ...
- 【UOJ#33】【UR #2】树上GCD(长链剖分,分块)
[UOJ#33][UR #2]树上GCD(长链剖分,分块) 题面 UOJ 题解 首先不求恰好,改为求\(i\)的倍数的个数,最后容斥一下就可以解决了. 那么我们考虑枚举一个\(LCA\)位置,在其两棵 ...
随机推荐
- UIView的frame的扩展分类,轻松取出x、y、height、width等值
一.引言: 在ios开发中,就界面搭建.控件布局时,都会很恶心的通过很长的代码才能取出控件的x.y.height.width等值,大大降低了开发效率.那为了省略这些恶心的步骤,小编在这里给UIView ...
- 20150222—LINQ to SQL 插入、更新和删除
注意,使用LINQ to SQL时, 表中必须有一个主键才可以起效,否则系统将无法对数据作出修改 插入新数据,根据上一片的文章实例在其中添加新的控件: 编号TextBox(Name):sno 名字Te ...
- 第一次使用easyUI
一.项目结构图 二.在WebContent下新建resource文件夹,在resource底下创建easyui.将easyUI包放入其中. 三.在springMVC-servlet.xml写入资源路径 ...
- 网易面试题:和为n连续正数序列
题目: 输入一个正数n,输出所有和为n连续正数序列.例如输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5.4-6和7-8. 继续做些题目,看到这是网易面试题,于是 ...
- OC 内存管理机制总结
OC 内存管理机制总结 一:OC内存管理机制目前分为两块,其一自动内存管理机制,其二手动内存管理机制: 1.首先我们从自动内存管理机制讲起: 1)什么是自动内存管理机制,自动内存管理机制就是程序中所创 ...
- ASP.NET MVC 表单的几种提交方式
下面是总结一下在ASP.NET MVC中表单的几种提交方式. 1.Ajax提交表单 需要引用 <script type="text/javascript" src=" ...
- 【Qt】Qt Linguist介绍【转】
简介 Qt提供了一款优秀的支持Qt C++和Qt Quick应用程序的翻译工具.发布者.翻译者和开发者可以使用这款工具来完成他们的任务. 发布者:承担了全面发布应用程序的责任.通常,他们协调开发者和翻 ...
- 重拾C,一天一点点_5
switch(表达式){ case 整型常量表达式:语句序列 case 整型常量表达式:语句序列 default:语句序列} while(表达式) 语句 for(表达式1; 表 ...
- 对现有Hive的大表进行动态分区
分区是在处理大型事实表时常用的方法.分区的好处在于缩小查询扫描范围,从而提高速度.分区分为两种:静态分区static partition和动态分区dynamic partition.静态分区和动态分区 ...
- CrossDomain.xml的作用及其简单用法
使用crossdomain.xml让Flash可以跨域传输数据 本文来自http://www.mzwu.com/article.asp?id=975 一.概述 位于www.mzwu.com域中的SWF ...