题意:动态查询区间的gcd,和gcd的值的个数。
分析:gcd的查找可以线段树,val(node) = gcd(val(left),val(val)),我是用ST表搞的。
然后查询这个值的区间有多少个。
简单说就是,这个gcd 不会很多,可以分区间hash好。
二分写的很糟。
#includeusing namespace std;const int maxn = 100000+5;int n;int a[maxn];int d[maxn][20];int gcd(int a,int b){ return b==0 ? a : gcd(b,a%b);}void init(int* a){ for(int i=0; i rec; for(int i=0; i