给我们n个数,然后有m个询问,每个询问为L,R,询问区间[L,R]的最大最小值,最小公约数,最大公约数,和,异或,或,且这些问题通通可以用RMQ的思想来解决。以下用xor来作为例子设dp[i][j]为以i开头的,长度为2^j的区间的所有值得异或那么dp[i][j] = dp[i][j-1] xor ...
分类:
其他好文 时间:
2015-09-24 21:04:34
阅读次数:
405
读了第一章的愚公移山,让我更深刻的体会到了编程的精义,就是把一个复杂的问题分解成一个个小问题,逐个解决。就像编写一个最大公约数,就要先想出两个数的最小公倍数,而最小公倍数的求法,就可以用1开始一直除到这个数的一半,然后再找出能除尽的最大的数。这样,一个问题就被我们分解开,快速的解决。 而第二...
分类:
其他好文 时间:
2015-09-23 18:39:45
阅读次数:
211
欧几里德算法欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b)。第一种证明: a可以表示成a = kb + r,则r = a mod b 假设d是a...
分类:
编程语言 时间:
2015-09-22 21:51:03
阅读次数:
307
#include int main(){ using namespace std;int m, n;cin >> n >> m; while (m != n) { while (m>n) { m = m - n; } while (n>m) { n ...
分类:
其他好文 时间:
2015-09-20 16:13:18
阅读次数:
117
import java.util.Scanner;//求两个数的最大公约数,最小共倍数。public class CommonMaxDivisor { public static void main(String[] args){ Scanner scanner=new ...
分类:
其他好文 时间:
2015-09-19 22:40:48
阅读次数:
228
题目描述 求a、b的最小公倍数。 题目分析 求a、b的最小公倍数,即求最小正整数c,使满足c%a=0且c%b=0。 代码实现 最大公约数(GCD) a*b/gcd(a, b)
分类:
其他好文 时间:
2015-09-17 19:16:34
阅读次数:
150
题目描述 求整数a、b的最大公约数。 题目分析 所谓求整数a、b的最大公约数,就是求同时满足a%c=0、b%c=0的最大正整数c,即求能够同时整除a和b的最大正整数c。 暴力枚举 若a、b均不为0,则依次遍历不大于a(或b)的所有正整数,依次试验它是否同时满足两式,并在所有满足两式的正整数中挑选最大...
分类:
其他好文 时间:
2015-09-17 18:59:07
阅读次数:
191
#!/bin/bash
#定义最大公约数和最小公约数
GCD_RESULT=""
LCM_RESULT=""
#定义一个相加的函数
functionsum(){
result=$((num1+num2))
echo-e"\033[31m两个数之和为$result\033[0m"
}
#定义一个求最大公约数函数
functiondivisor(){
if["$num1"-eq"$num2"];
then
s_great=$nu..
分类:
系统相关 时间:
2015-09-17 15:20:23
阅读次数:
219
扩展欧几里德算法基本算法:对于不完全为 0 的非负整数 a,b,gcd(a,b)表示 a,b 的最大公约数,必然存在整数对 x,y ,使得 gcd(a,b)=ax+by。证明:设 a>b。 1,显然当 b=0,gcd(a,b)=...
分类:
编程语言 时间:
2015-09-15 00:09:47
阅读次数:
222
欧几里德算法欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b)。第一种证明: a可以表示成a = kb + r,则r = a mod b 假设d是a,b....
分类:
其他好文 时间:
2015-09-12 21:35:54
阅读次数:
183