98 lines
1.8 KiB
Java
98 lines
1.8 KiB
Java
package chelper;
|
|
|
|
import io.InputReader;
|
|
import io.OutputWriter;
|
|
import prep.LongMod;
|
|
import solutions.ChelperSolution;
|
|
|
|
|
|
public class TaskC extends ChelperSolution {
|
|
|
|
{
|
|
gcj = true;
|
|
}
|
|
|
|
public void solve(int testNumber, InputReader in, OutputWriter out) {
|
|
super.solve(testNumber, in, out);
|
|
}
|
|
|
|
final LongMod MOD = new LongMod(1000000007L);
|
|
|
|
int N = 1001000;
|
|
long[] inverses = new long[N];
|
|
|
|
@Override
|
|
protected void precalc() {
|
|
for (int i = 2; i < N; i++) {
|
|
inverses[i] = MOD.inversePrime(i - 1);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void solve(int testNumber) {
|
|
int n = in.nextInt();
|
|
int k = in.nextInt();
|
|
|
|
long x1 = in.nextInt();
|
|
long y1 = in.nextInt();
|
|
long C = in.nextInt();
|
|
long D = in.nextInt();
|
|
long E1 = in.nextInt();
|
|
long E2 = in.nextInt();
|
|
long FVal = in.nextInt();
|
|
|
|
LongMod F = new LongMod(FVal);
|
|
|
|
long[] x = new long[n];
|
|
long[] y = new long[n];
|
|
|
|
x[0] = F.mod(x1);
|
|
y[0] = F.mod(y1);
|
|
|
|
for (int i = 1; i < n; i++) {
|
|
x[i] = F.sum(
|
|
F.prod(x[i - 1], C),
|
|
F.prod(y[i - 1], D),
|
|
E1
|
|
);
|
|
y[i] = F.sum(
|
|
F.prod(x[i - 1], D),
|
|
F.prod(y[i - 1], C),
|
|
E2
|
|
);
|
|
}
|
|
|
|
long[] a = new long[n];
|
|
for (int i = 0; i < n; i++) {
|
|
a[i] = F.sum(x[i], y[i]);
|
|
}
|
|
|
|
long[] numPowers = new long[n + 1];
|
|
numPowers[1] = MOD.mod(k);
|
|
for (int i = 2; i <= n; i++) {
|
|
numPowers[i] = MOD.prod(
|
|
i,
|
|
MOD.sub(MOD.pow(i, k), 1),
|
|
inverses[i]
|
|
);
|
|
}
|
|
|
|
long res = 0;
|
|
long numSum = 0;
|
|
for (int i = 0; i < n; i++) {
|
|
numSum = MOD.sum(numSum, numPowers[i + 1]);
|
|
res = MOD.sum(
|
|
res,
|
|
MOD.prod(
|
|
a[i],
|
|
n - i,
|
|
numSum
|
|
)
|
|
);
|
|
}
|
|
|
|
debug.println("hi");
|
|
out.println(res);
|
|
}
|
|
}
|