问题 6337 --此身为剑

6337: 此身为剑★★★

时间限制: 2 Sec  内存限制: 256 MB
提交: 5  解决: 2
[提交][状态][命题人:]

题目描述

剑身碎裂,落入彻骨的寒冷中。
凡铁俗器皆是无用之物,它们的上限,望一眼就看得到尽头。
「我还要剑何用?」
她没有眷恋,眼中亦没有容纳任何一物。
「从此刻起,此身为剑。」
要想跨越所谓的极限,要想得到无人涉足的突破
——唯有将自己也视作一份「薪柴」了。

镜流面前有 n 个敌人,第 i 个敌人的属性是 a[i] 。
镜流会出 q 次剑攻击敌人,第 i 出剑的攻击属性为 x[i] 。若一个连续区间 [l,r] 内的敌人的属性的最大公约数为 x[i] ,则这些敌人会被成功击中,即 gcd(a[l],a[l+1],...,a[r])=x[i] 。
每次出剑前,请你帮镜流计算下有多少种 [l,r] 区间满足条件。

输入

第一行包含一个正整数 n (1≤n≤10^5) ,表示敌人数。
第二行包含 n 个正整数 a[1],a[2],...,a[n] (1≤a[i]≤10^9) ,表示每个敌人的属性。
第三行包含一个正整数 q (1≤q≤3·10^5) ,表示出剑次数。
接下来 q 行,每行一个整数 x[i] (1≤x[i]≤10^9) ,表示第 i 次出剑的攻击属性。

输出

对于每次出剑,输出一行包含一个整数,表示有多少种 [l,r] 区间满足该次出剑的击中条件。
样例输入
Copy
样例1:
3
2 6 3
5
1
2
3
4
6

样例2:
7
10 20 3 15 1000 60 16
10
1
2
3
4
5
6
10
20
60
1000
样例输出
Copy
样例1:
1
2
2
0
1

样例2:
14
0
2
2
2
0
2
2
1
1

提示

来源

[提交][状态]