先介绍两个: 大数的Gcd Stein+欧几里德 function stein(a,b:int64):int64; begin if a<b then exit(stein(b,a)); then exit(a); )=) )=) ,b>>)<<); )= ,b)); )= )); exit(stein((a+b)>>,(a-b)>>)); end; 小数的Gcd 辗转相除法 function stein(a,b:int64):int64; begin…
0x01 :序言:无关的事 I wrote a sign called "Dead End" in front of myself, but love crossed it with a smile and said , "I can enter anywhere" 在我们不知所畏却还敢胡作非为的最肆意的年纪里, 不为未得到而抑郁难捱, 不为已失去而怅然若失, 踮起足弓,蜷起脚尖,用最大的力气为己所拥有而喝彩, 趁时间正好,一切还在: ——因为<夏洛特烦恼&g…
You are given two jugs with capacities x and y litres. There is an infinite amount of water supply available. You need to determine whether it is possible to measure exactly z litres using these two jugs. If z liters of water is measurable, you must…
#include<stdio.h> int gcd(int a, int b) { int c; while(b) { c = a % b; a = b; b = c; } return a; } int main() { int a, b; while(scanf("%d%d", &a, &b) != EOF) { printf("%d\n", gcd(a, b)); } ; }…
#include<iostream> using namespace std; //不推荐用goto,当然用它更快 //辗转相除法求两数的最大公约数 int gcd(long int a,long int b){ int x=a<b?a:b; //获得较小者,用来做循环的约束值 ;i<x;x++){ //循环 if(a>b){ int r=a%b;//取余数 ){//能否整除判断 return b;//可以便输出 }else{//否则进行下一轮的算法 a=b,b=r; } }…
gcd算法是用来求两个数最大公约数的算法,他是依靠辗转相除(中国好像叫辗转相减)法来求两个数的最大公约数,别的地方也有很多介绍不做过多赘述,主要提供代码供自己参考. gcd(int a,int b) { ?a:gcd(b,a%b); } 对于拓展gcd,是对方程ax+by=c求解: 就是a mod b=c这个方程求解: 具体看代码,不做过多赘述因为别人已经讲的很详细了,在这里copy一下别人的讲解: 我们其实只需要考虑形如 a • x mod n = 1 的方程.因为,如果能解出这样的方程, a…
题目连接:http://www.spoj.com/problems/LGLOVE/ 题意:给出n个初始序列a[1],a[2],...,a[n],b[i]表示LCM(1,2,3,...,a[i]),即1~a[i]的最小公倍数 然后给出三种操作,注意:0<=i,j<n 0 i j p :a[i]~a[j]都加上p 1 i j :求LCM(b[i],b[i+1],...,b[j]) 2 i j :求GCD(b[i],b[i+1],...,b[j]) 思路: 求LCM(b[i],b[i+1],...,…
#include<stdio.h> #include<string.h> #include<string.h> ],str2[]; int len; int cal(char *str1,char *str2) { ,i; ;str1[i]&&str2[i];i++) { if(str1[i]==str2[i]) ret++; } return ret; } int max(int a, int b) { int z; z=(a>b)?a:b; r…