一些板子
时间:2019-11-07
本文章向大家介绍一些板子,主要包括一些板子使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在此记录一些本人百打百挂的板子:
1. 扩展欧几里得(以青蛙的约会为模板)
题意:给出n,m,x,y,l,求g*l+k*(n-m)=x-y中k的最小正整数解
做法:明显是扩欧板子虽然我不会写
注意n-m为负数时,将n-m与x-y同时取相反数即可
记住x=y1,y=x1-a/b*y1
当求出ax+by=gcd(a,b)的特解后,通解为y=y0-(a/gcd)*t,x=x0+(b/gcd)*t
上代码
#include <cstdio> inline long long int gcd(long long int a,long long int b){return b==0?a:gcd(b,a%b);} inline void exgcd(long long int a,long long int b,long long int &x,long long int &y){ if(b==0){ x=1,y=0; return; } long long int x1,y1; exgcd(b,a%b,x1,y1); x=y1,y=x1-a/b*y1; return; } int main(void){ long long int xx,yy,mm,nn,ll; scanf("%lld%lld%lld%lld%lld",&xx,&yy,&mm,&nn,&ll); long long int a=ll,b=mm-nn,c=yy-xx; if(b<0) b=-b,c=-c; long long int d=gcd(a,b); if(c%d){ printf("Impossible"); return 0; } else{ a/=d,b/=d,c/=d; long long int x,y; exgcd(a,b,x,y); printf("%lld\n",((y*c)%a+a)%a); } }
原文地址:https://www.cnblogs.com/Pride205/p/11811558.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法