hdu2669与hdu1576(扩展欧几里德)
模板:
int Extend_Euclid(int a, int b, int &x, int &y){
if(b == 0){
x = 1;
y = 0;
return a;
}
else{
int gcd,t;
gcd = Extend_Euclid(b, a%b, x, y);
t = x;
x = y;
y = t - (a / b) * y;
return gcd;
}
}
详见:http://www.cnblogs.com/yuelingzhi/archive/2011/08/13/2137582.html
hdu 2669
10 44
34 79
sorry
7 -3
求 a*x + b*y = 1。输出一个正数x,一个y。
直接套模板,最后对x < 0时处理一下,∵a*x + b*y = 1,所以x+=b,y-=a来保持值不变
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#include <cmath>
#include <algorithm>
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
const int N=100050; ll ex_gcd(ll a,ll b,ll &x,ll &y) //扩展欧几里德
{
if(b ==0)
{
x = 1;y = 0;
return a;
}
else
{
ll t = ex_gcd(b,a%b,y,x);
y = y - x*(a/b);
return t;
}
} int main()
{
ll a,b;
while(scanf("%I64d%I64d",&a,&b)!= EOF)
{
ll x,y;
ll tmp = ex_gcd(a,b,x,y);
if(1 % tmp)
printf("sorry\n");
else
{
while(x < 0){
x += b;
y -= a;
}
printf("%I64d %I64d\n",x,y);
}
}
return 0;
}
hdu 1576
每组数据有两个数n(0 <= n < 9973)和B(1 <= B <= 10^9)。
1000 53
87 123456789
6060
A % B = 0,A= Bx;
n = A%9973 , A = 9973y + n; Bx -9973y = n;
GCD(b,9973) = 1, b*x1 + 9973y1 = 1, b*x1*n + 9973 *(n*y1) = n
∴ x = n*x1, x1可以通多exGCD算出
最后的x通过 (x % MOD + MOD)%MOD 防止出现负数
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#include <cmath>
#include <algorithm>
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
const int N=100050; void ex_gcd(int a,int b,int &x,int &y) //扩展欧几里德
{
if(b ==0)
{
x = 1;y = 0;
}
else
{
ex_gcd(b,a%b,y,x);
y = y - x*(a/b);
}
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,B;
scanf("%d%d",&n,&B);
int x,y;
ex_gcd(B,9973,x,y);
x *= n; printf("%d\n",(x%9973 + 9973)% 9973); //再加上一次,防止负
}
return 0;
}
hdu2669与hdu1576(扩展欧几里德)的更多相关文章
- hdu1576 扩展欧几里德 A/B
A/B Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- HDU2669 Romantic 扩展欧几里德 对我来说有陷阱
这道题对我来说有陷阱虽说是赤果果的扩展欧几里德,看样子基本攻还是不够哈,基本功夫一定要好,准备每天上那种洗脑课时分 多看看数论书,弥补一下 自己 狗一样的基础, 这道题用到了一个性质: 对于不定整数 ...
- (扩展欧几里德算法)zzuoj 10402: C.机器人
10402: C.机器人 Description Dr. Kong 设计的机器人卡尔非常活泼,既能原地蹦,又能跳远.由于受软硬件设计所限,机器人卡尔只能定点跳远.若机器人站在(X,Y)位置,它可以原地 ...
- [BZOJ1407][NOI2002]Savage(扩展欧几里德)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1407 分析: m,n范围都不大,所以可以考虑枚举 先枚举m,然后判定某个m行不行 某个 ...
- 欧几里德与扩展欧几里德算法 Extended Euclidean algorithm
欧几里德算法 欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数. 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd( ...
- 51nod 1352 扩展欧几里德
给出N个固定集合{1,N},{2,N-1},{3,N-2},...,{N-1,2},{N,1}.求出有多少个集合满足:第一个元素是A的倍数且第二个元素是B的倍数. 提示: 对于第二组测试数据,集合分别 ...
- CF 7C. Line(扩展欧几里德)
题目链接 AC了.经典问题,a*x+b*y+c = 0整数点,有些忘记了扩展欧几里德,复习一下. #include <cstdio> #include <iostream> # ...
- poj2142-The Balance(扩展欧几里德算法)
一,题意: 有两个类型的砝码,质量分别为a,b;现在要求称出质量为d的物品, 要用多少a砝码(x)和多少b砝码(y),使得(x+y)最小.(注意:砝码位置有左右之分). 二,思路: 1,砝码有左右位置 ...
- poj2115-C Looooops(扩展欧几里德算法)
本题和poj1061青蛙问题同属一类,都运用到扩展欧几里德算法,可以参考poj1061,解题思路步骤基本都一样.一,题意: 对于for(i=A ; i!=B ;i+=C)循环语句,问在k位存储系统中循 ...
随机推荐
- win7 Anaconda 安装 scrapy模块
之前用了很多方法,都安装不成功,今天终于成功了..说下方法.. anaconda的清华镜像:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ ...
- xapp1151_Param_CAM模块安装
xapp1151_Param_CAM模块安装 所需生成模块 TCAM CAM 下载链接 赛灵思技术支持网站:http://www.xilinx.com/support.html 并在网页中搜索xapp ...
- Nginx配置小结
前两天区听了一堂Nginx的课,然后翻了一下自己之前的Nginx的笔记,做了一个简单的小结. 全局变量 $args : 这个变量等于请求行中的参数,同$query_string $content_le ...
- 【深度学习】深入理解Batch Normalization批标准化
这几天面试经常被问到BN层的原理,虽然回答上来了,但还是感觉答得不是很好,今天仔细研究了一下Batch Normalization的原理,以下为参考网上几篇文章总结得出. Batch Normaliz ...
- js 防止重复点击
1.添加flag 适用于ajax 表单提交,提交之前flag = false , 提及中,true ,提交后false 2.事件重复点击: <script> var throttle = ...
- Code::Blocks出现64-Bit mode not compled in解决方法
原因是:Settings->compilter你选了Target x86 _64(64bit),选择Target x86 _32(32bit)即可 废了老半天劲才找到原因,希望能让朋友们少走弯路
- 【原创】公司各个阶段 CTO 需要做什么?(上篇)
CTO 是企业内技术最高负责人,对企业的发展起到至关重要的作用.但随着公司的不断发展,CTO 的工作重心也会不断变化.只有在正确的阶段做正确的事,才能更好地为公司做出贡献.我是空中金融 CTO ,TG ...
- ELK学习总结(2-3)Mget获取多个文档
mget 获取多个文档 1.curl 命令格式:mget获取多个文档: curl 'localhost:9200/_mget' -d '{ "docs":[ { " ...
- api-gateway实践(01)服务网关 - 原型功能
一.服务注册 1.增加组:LsqGrpA 2.增加版本:LsqVerA 3.增加api:LsqApiA 3.1.基本信息 3.2.前端定义 3.3.后端定义 二.服务上线和服务授权 1.服务上线 2. ...
- Window7系统下安装jdk
根据电脑的操作系统下载相对于的jdk版本(32位或64位),我安装的是:java_jdk1.7 [计算机]——[属性]——[高级系统设置]——高级——[环境变量] 系统变量——>新建JAVA_H ...