F.A.Q
Hand In Hand
Online Acmers
Problem Archive
Realtime Judge Status
Authors Ranklist
 
     C/C++/Java Exams     
ACM Steps
Go to Job
Contest LiveCast
ICPC@China
Best Coder beta
VIP | STD Contests
    DIY | Web-DIY beta
Author ID 
Password 
 Register new ID

带劲的多项式

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 43    Accepted Submission(s): 16


Problem Description
光羽的高等代数挂科了,度度熊非常难受,于是带劲出了一道高代水题来安慰他!

定义模域$P$下的$d$次多项式$A(x)=\sum_{i=0}^{d} a_i x^i$,其中$a_i$是整数且$0 \le a_i < P$。其中$P=998244353$。

定义模域$P$下$n$次多项式$A(x)$和$m$次多项式$B(x)$的乘法为:
$A(x)B(x)= \sum_{s=0}^{n+m} (\sum_{i+j=s} a_i b_j) \% P \times x^s$
其中$\% P$表示对质数P取模。

给出模域P下多项式$f(x)= \sum_{i=0}^{n} a_i x^i$,$(0 \le a_i < P)$。

这个多项式很**带劲**,它**保证**可以表示成这样:
$f(x)= (x - \lambda_1)^{l_1}(x - \lambda_2)^{l_2}..(x - \lambda_m)^{l_m}.$
(因为数据就是这么造的。)

其中$0 \le \lambda_i < P$且$\lambda_i$两两不同,同时满足$l_1 < l_2 < .. < l_m$且$\sum_{i=1}^{m} l_i = n$。注意此处乘法为之前定义的模域下乘法。

给出n和n+1个数$a_0,a_1,..,a_n$,求出$\lambda_1,\lambda_2,...,\lambda_m$和$l_1,l_2,...,l_m$。

**由唯一分解定理知答案唯一。**
 

Input
第一行一个数,表示数据组数$T$。

每组数据第一行仅包含一个数$n$;第二行$n+1$个数,分别为$a_0,a_1,...,a_n$。

数据组数T=100,$1 \le n \le 2000$。
其中90%的数据满足$1 \le n \le 200$。
 

Output
每组数据输出$m+1$行,第一行仅包含一个数表示$m$,接下来m行,每行两个数$\lambda_i,l_i$,**要求按照$l_i$升序输出。**
 

Sample Input
3 5 998241761 3024 998243057 264 998244327 1 5 0 0 0 64 998244337 1 5 998233985 8208 998241761 408 998244321 1
 

Sample Output
2 2 1 6 4 2 8 2 0 3 2 8 1 6 4
 

Source
 

Statistic | Submit | Discuss | Note
Hangzhou Dianzi University Online Judge 3.0
Copyright © 2005-2024 HDU ACM Team. All Rights Reserved.
Designer & Developer : Wang Rongtao LinLe GaoJie GanLu
Total 0.000000(s) query 1, Server time : 2024-05-21 09:24:59, Gzip enabled