Problem
【UR #5】怎样跑得更快
时间限制: 1Sec
空间限制: 256MB
大力水手问禅师:“大师,我觉得我光有力气是不够的。比如我吃菠菜可以让力气更大,但是却没有提升跑步的速度。请问怎样才能跑得更快?我试过吃白菜,没有效果。”
禅师浅笑,答:“方法很简单,不过若想我教你,你先看看这道UOJRound的C题。”
令 p=998244353(7×17×223+1,一个质数)。
给你整数 n,c,d。现在有整数 x1,⋯,xn 和 b1,⋯,bn 满足 0≤x1,⋯,xn,b1,⋯,bn<p,且对于 1≤i≤n 满足:
j=1∑ngcd(i,j)c⋅lcm(i,j)d⋅xj≡bimodp
其中 v≡umodp 表示 v 和 u 除以 p 的余数相等。gcd(i,j) 表示 i 和 j 的最大公约数,lcm(i,j) 表示 i 和 j 的最小公倍数。
有 q 个询问,每次给出 b1,⋯,bn,请你解出 x1,⋯,xn 的值。
输入格式
第一行四个整数 n,c,d,q。保证 n,q≥1。
接下来 q 行,每行 n 个整数依次表示 b1,⋯,bn。保证 0≤b1,⋯,bn<p。
输出格式
共 q 行,每行对给出的 b1,⋯,bn,输出对应的 x1,⋯,xn。
如果有多组解输出任意一组即可。
如果无解那么这一行只用输出一个整数 −1。