ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#215273 | #2643. gcd | nodgd | 100 | 415ms | 3016kb | C++11 | 1.9kb | 2024-11-27 21:46:47 | 2024-11-27 23:39:55 |
answer
#include <bits/stdc++.h>
using namespace std;
typedef long long i64;
const int BUFFER_SIZE = 1 << 20;
char rb[BUFFER_SIZE], *rp = rb, *rt = rb;
inline char read_char() {
return rp == rt ? (rt = rb + fread(rb, 1, BUFFER_SIZE, stdin), rp = rb, *rp ++) : *rp ++;
}
inline i64 read_int() {
i64 x = 0;
char ch = read_char(), flag = 0;
while (ch != '-' && (ch < '0' || ch > '9')) {
ch = read_char();
}
if (ch == '-') {
flag = 1;
ch = read_char();
}
for (x = 0; ch >= '0' && ch <= '9'; ch = read_char()) {
x = x * 10 + (ch - '0');
}
return flag ? -x : x;
}
const int MAX_N = 100000 + 5;
i64 gcd(i64 a, i64 b) {
for (i64 t; b; t = a, a = b, b = t % a);
return a;
}
int N, Q;
int nb, nc;
i64 a[MAX_N];
i64 bv[MAX_N], cv[MAX_N];
int bl[MAX_N], cl[MAX_N];
map<i64,i64> ans;
int main() {
N = read_int();
for (int i = 1; i <= N; i ++) {
a[i] = read_int();
nc = 1;
cv[0] = a[i];
cl[0] = i;
i64 t = a[i];
for (int j = 0; j < nb; j ++) {
t = gcd(bv[j], t);
if (t == cv[nc - 1]) {
cl[nc - 1] = bl[j];
} else {
cv[nc] = t;
cl[nc] = bl[j];
nc ++;
}
}
nb = nc;
for (int j = 0, la = i + 1; j < nc; j ++) {
bv[j] = cv[j];
bl[j] = cl[j];
if (ans.find(cv[j]) == ans.end()) {
ans[cv[j]] = la - cl[j];
} else {
ans[cv[j]] += la - cl[j];
}
la = cl[j];
}
}
for (Q = read_int(); Q --; ) {
i64 x = read_int();
if (ans.find(x) == ans.end()) {
printf("0\n");
} else {
printf("%lld\n", ans[x]);
}
}
return 0;
}
Details
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 30ms
memory: 1848kb
input:
1071 546 2340 8190 420 6300 1050 40950 25 23400 195 2340 630 195 40950 2184 504 525 130 2340 1800 39...
output:
29 568770 132 197 63 84 197 63 1099 568770 29 164 22 113 197 84 1099 568770 197 197 568770 716 132 6...
result:
ok 253041 lines
Test #2:
score: 10
Accepted
time: 31ms
memory: 1932kb
input:
2878 728 50 420 4200 25 200 4 81900 546 195 11700 900 900 42 1092 520 6 36 6552 150 18200 130 585 28...
output:
183 440 521 100 3619 1310 183 201 100 521 100 468 129 331 468 4128473 100 440 183 4128473 4128473 13...
result:
ok 278290 lines
Test #3:
score: 10
Accepted
time: 31ms
memory: 1856kb
input:
1685 1365 225 40 9 3900 3900 2100 105 120 25 8 2184 2184 10 2100 23400 780 600 325 32760 4680 260 39...
output:
1412451 1545 220 47 925 1412451 1412451 925 90 330 220 196 90 815 94 92 90 1412451 92 248 815 248 81...
result:
ok 253539 lines
Test #4:
score: 10
Accepted
time: 34ms
memory: 1936kb
input:
3492 1820 9100 45 8190 72 50 3276 260 14 8 24 65 910 5850 150 520 23400 520 700 2730 300 72 728 70 2...
output:
1954 1954 1940 2980 165 565 165 135 538 2980 569 1954 6081994 2980 165 178 1954 569 422 569 1954 538...
result:
ok 278788 lines
Test #5:
score: 10
Accepted
time: 53ms
memory: 2696kb
input:
65614 4680 3900 2340 6825 5 1560 780 12600 75 140 156 50 3276 182 315 52 5460 40950 20475 14 78 2340...
output:
10574 1873 1873 10249 3685 3735 10249 2152307887 10249 10249 1873 7058 10261 3672 2152307887 10249 1...
result:
ok 288360 lines
Test #6:
score: 10
Accepted
time: 63ms
memory: 3016kb
input:
99228 11700 1400 35 1260 2520 975 56 100 18200 468 20 1560 450 900 36 468 9 4 56 650 195 3 468 4680 ...
output:
16046 2780 15425 51019 5415 16035 11219 11219 16046 5417 51019 16035 15425 16035 5417 5517 51019 278...
result:
ok 288858 lines
Test #7:
score: 10
Accepted
time: 42ms
memory: 2208kb
input:
26035 39 900 315 1400 130 2600 7800 4095 234 36 200 25 312 1092 252 780 90 23400 1 4680 104 2 54600 ...
output:
13708 638 4405 4405 4175 4405 1333 4238 638 13173 4238 2712 1360 1333 4405 13173 4175 4405 2712 2712...
result:
ok 280460 lines
Test #8:
score: 10
Accepted
time: 45ms
memory: 2348kb
input:
42842 468 325 390 1 120 150 6552 60 840 780 7800 126 35 140 40950 81900 6300 75 1050 210 6300 700 45...
output:
6626 2410 7045 917526742 2410 2354 917526742 4904 2354 2456 917526742 917526742 7148 2354 7045 7148 ...
result:
ok 255709 lines
Test #9:
score: 10
Accepted
time: 55ms
memory: 2744kb
input:
76456 8190 700 32760 27300 2100 24 3 126 1820 150 280 9100 104 3900 520 27300 65 1638 4095 273 450 1...
output:
12422 2922417371 12341 12121 8442 4236 38390 12422 4273 2030 4236 4155 41537 38390 2922417371 4236 8...
result:
ok 256207 lines
Test #10:
score: 10
Accepted
time: 31ms
memory: 2768kb
input:
100000 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2...
output:
5000050000 5000050000 5000050000 5000050000 5000050000 5000050000 5000050000 5000050000 5000050000 5...
result:
ok 300000 lines