RT,最开始写了一份 WA on #10
改了改就过了,但是没看出来为什么
int ans = 1;
for(int i = 2; i <= n; i++) {
if(a[i] != a[i - 1]) {
ans = 1ll * ans * calc(a[i - 1] / a[i], m / a[i]) % mod;
}
else {
ans = 1ll * ans * (m / a[i]) % mod;
}
}
int ans = 1, pp = 1;
while(a[pp + 1] == a[1]) {
ans = 1ll * ans * ((m / a[1]) % mod) % mod;
pp++;
}
for(int i = pp + 1; i <= n; i++) {
if(a[i] != a[i - 1]) {
ans = 1ll * ans * calc(a[i - 1] / a[i], m / a[i]) % mod;
for(int p = i; p <= n; p++) {
if(a[p + 1] != a[p]) {
i = p; break;
}
ans = 1ll * ans * ((m / a[i]) % mod) % mod;
}
}
}
具体的提交记录:
WA
AC