数论:GCD
BRCOCOLI
初学者 记录成长 Fighting
展开
-
POJ 3696 The Luckiest number 欧拉定理+快速幂+GCD *
题目地址:http://poj.org/problem?id=3696思路来源:1,2,3,4关键是推公式:(10^x-1)/9*8=L*k,->(10^x-1)*8=9*L*k->(10^x-1)*8/gcd(9*L,8)=9*L/gcd(9*L)*k 而8/gcd(9*L,8)与9*L/gcd(9*L,8)互质,因为他们除掉了gcd->9*L/gcd(9*L,8)|(1原创 2016-08-13 16:32:27 · 351 阅读 · 0 评论 -
POJ 2142 The Balance .
题目地址:http://poj.org/problem?id=2142有两种可能的情况:a与d放在一起,即 ax+d=byb与d放在一起,即 ax=by+d因为x,y是任取的 ,所以解下面一个方程ax+by=d 利用扩展欧几里得定理,可得两组解,1. x的最小非负解,及其对应的y2. y的最小非负解,及其对应的x因为求的是|x|+|y|的最小值,比较一下就好了原创 2016-08-13 12:39:21 · 214 阅读 · 0 评论 -
欧几里得算法及其应用
1)求最大公约数int gcd(int a,int b){ if(b==0) return a; return gcd(b,a%d); } 2)求最小公倍数int lcm(int a,int b){ return a*b/gcd(a,b);}3)扩展欧几里得算法求 ax+by=c的方程的解:先求出ax+by=gcd(a,b) 的一个解(x,y) ,为求出这个解原创 2016-08-07 12:29:11 · 625 阅读 · 0 评论 -
POJ 2115 C Looooops (扩展欧几里得算法)
#include#include#include#include#includeusing namespace std;typedef long long LL;LL gcdEx(LL a,LL b,LL& x,LL& y){ //求ax+by=gcd(a,b) 的整数解 返回gcd(a,b); if(b==0) { x=1; y=0; return a; } LL原创 2016-08-07 13:10:55 · 431 阅读 · 0 评论 -
POJ 1061 青蛙的约会
题目地址:http://poj.org/problem?id=1061就是求(x-y)*t +(n-m)*k = -a 的式子中t的最小解,但注意k!=0#include#include#include#include#includeusing namespace std;typedef long long LL;void gcd(LL a,LL b,LL &d,LL &x,原创 2016-09-16 09:43:48 · 232 阅读 · 0 评论