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\)位置,在其两棵 ...
随机推荐
- Wim技术之Wim文件的制作
背景:操作的镜像文件为win8.1 update的ISO里的Wim文件 1.使用如下命令将支持WimBoot的instal.Wim文件转换成可以支持wimboot启动的映像文件 Dism /Expor ...
- Mongo客户端MongoVUE的基本使用
这里没有涉及到服务器以及客户端的安装,文章主要介绍mongo客户端mongoVUE的使用 一.数据库连接 点击绿色加号添加一个连接,输入name.server.port,点击save,点击connec ...
- 8个web前端的精美HTML5 & CSS3效果及源码下载
作为一个前沿的 Web 开发者,对于 HTML5 和 CSS3 技术或多或少都有掌握.前几年这些新技术刚萌芽的时候,开发者们已经使用它们来小试牛刀了,如今这些先进技术已经遍地开发,特别是在移动端大显身 ...
- setbuf
setbuf是linux中的C函数,主要用于打开和关闭缓冲机制. setbuf函数具有打开和关闭缓冲机制.为了带缓冲进行I/O,参数buf必须指向一个长度为BUFSIZ(定义在stdio.h头文件中) ...
- 纪念一下自己的第一篇cnblog
2016-08-1016:33:22 // Netease.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iost ...
- [Guava源码分析] Preconditions 前置条件
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3874170.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...
- silverlight 文本框只能输入汉字
private void txtName_KeyDown(object sender, KeyEventArgs e) { Regex rg = new Regex("^[\u4e00-\u ...
- Berkeley DB
最近用BDB写点东西,写了挺多个测试工程.列下表,也理清楚最近的思路 1.测试BDB程序,包括打开增加记录,查询记录,获取所有记录.将数据转存mysql 程序的不足,增加记录仅仅只有key和value ...
- NetworkInfo 手机中的网络类型
04-27 21:56:54.442: E/NetworkInfo(26457): NetworkInfo: type: mobile[EDGE], state: DISCONNECTED/IDLE, ...
- php随机验证码
今天同学问我,用php怎么写验证码,由于是新手所以花了半天的时间才完成.而且功能很是简单呵呵.今天本来打算写session和cookie的看来是要明天了. <?php $image_width= ...