原问题:
代码:
void solve() {ll i, j, k, p, q, u, v, l, r, x, y, z, z1;z = 0;double a, b, c;N = 1e9;n = 250250;p = 1e16;z = 250;for (i = 1; i <= n; i++) {C[i]= M.NT.prime_pow(i, i, z);}A[0] = 1;for (i = 1; i <= n; i++) { x = C[i];for (j = 0; j < z; j++) {B[ (x + j)%z ] = B[(x + j) % z] + A[j];}for (j = 0; j < z; j++) {A[j] = A[j] + B[j];A[j] = A[j] % p;B[j] = 0;}}printf("%lld\n", A[0]-1);}