2742: [HEOI2012]Akai的数学作业

Description

这里是广袤无垠的宇宙这里是一泻千里的银河

这里是独一无二的太阳系

这里是蔚蓝色的地球

这里,就是这里,是富饶的中国大陆!

这里是神奇的河北大地

这里是美丽的唐山

这里是神话般的唐山一中

这里是Akai曾经的教室

黑板上还留有当年Akai做过的数学作业,其实也并不是什么很困难的题目:

给出一个一元n次方程:

a0 + a1x + a    2   x2 +…+ anxn= 0

求此方程的所有有理数解。

” Akai至今还深刻记得当年熬夜奋战求解的时光

他甚至还能记得浪费了多少草稿纸

但是却怎么也想不起来最后的答案是多少了

你能帮助他么?

Input

第一行一个整数n。第二行n+1个整数,分别代表a    0 到a n

Output

第一行输出一个整数t,表示有理数解的个数

接下来t行,每行表示一个解

解以分数的形式输出,要求分子和分母互质,且分母必须是正整数特殊的,如果这个解是一个整数,那么直接把这个数输出

等价的解只需要输出一次

所有解按照从小到大的顺序输出

Sample Input

3
-24 14 29 6

Sample Output

3
-4
-3/2
2/3

HINT

【数据范围】

对于30%的数据,n<=10

对于100%的数据,n <= 100,|a i| <= 2*10^7,an≠ 0

Mogical Mathematics

好像是求$f(x) = a_0 + a_1x + a_2x^2 + … + a_nx^n$ 的零点

我们可以发现(有理数域下)式子一定可以变成 $g(x) * \Pi(b_ix + c_i)$

所以根就是$-\frac{c_i}{b_i}$

然后听说今天早上CMO大爷给我们证了一下$c_i$一定是$a_0$因数,$b_i$一定是$a_n$因数,具体是这样的:式子其实在复数域下是$\Pi(b_ix + c_i)$,然后所有$b_i$的积就是$x_n$的系数($a_n$),所有$c_i$的积就是常数项的系数($a_0$)

然后,我们就可以求出$a_n$、$a_0$所有因数,然后大力check一下就好啦。具体怎么check呢,就是代回去算23333(模意义下)

然后我就滚去写代码了QAQ

时间: 2024-10-13 12:23:04

2742: [HEOI2012]Akai的数学作业的相关文章

矩阵乘法专题4——bzoj 2326 [HNOI2011] 数学作业 题解

转载请注明:http://blog.csdn.net/jiangshibiao/article/details/24963747 [原题] 2326: [HNOI2011]数学作业 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 853  Solved: 473 [Submit][Status] Description [分析]我们按数字的位数来划分.对于K位数,我们就可以专门设计一个矩阵来计算. 然后就是注意细节了. [代码] #include

2326: [HNOI2011]数学作业

2326: [HNOI2011]数学作业 Description 不说什么ACTY了.. 题解: 线性的递推很容易写出来,f[i]=f[i-1]*10+i  (mod) 但是n很大,就需要用到矩阵乘法了.. 我们够造矩阵 10^i   0       0       f[i-1]        f[i] 1        1       0   *   i-1     =    i 1        1       1        1             1 #include<stdio.

【BZOJ 2326】 [HNOI2011]数学作业

2326: [HNOI2011]数学作业 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1100  Solved: 625 [Submit][Status] Description 矩阵乘法. 可以用类似于秦九韶算法,把被取模的数拆开. 如123%m=(((1%m)*10+2)%m*10+3)%m 我们发现对于位数相同的数的计算方法是一样的,想到矩阵乘法. 对于1位的数: matrix x=10^1  0  0 1       1  0 0  

codevs 2314 数学作业

2314 数学作业 2011年省队选拔赛湖南 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 N 和 M ,要求计算 Concatenate (1 .. N ) Mod M 的值,其中Concatenate (1 .. N ) 是将所有正整数 1, 2, …, N 顺序连接起来得到的数.例如, N = 13, Concatenate (1 ..

bzoj2326【HNOI2011】数学作业

2326: [HNOI2011]数学作业 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1648  Solved: 972 [Submit][Status][Discuss] Description (f[n])(10^k  1    1)(f[n-1]) ( n )=(0      1    1)( n-1 ) ( 1 ) (0      0    1)(  1  ) 然后分段矩阵乘法.这道题调了整整一晚上,忘记每一步运算都取模,这道题很容易

【bzoj2326】【HNOI2011】【数学作业】

2326: [HNOI2011]数学作业 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1264 Solved: 727 [Submit][Status][Discuss] Description 思路:其实很容易可以想到,当我们所要连接的数的位数不同的时候,我们需要把原来的数增大的倍数是不一样的. 所以我们需要分阶段来做矩乘. 根据数的位数分为1->9;10->99---10^k->10^(k+1)-1;就可以了. 但是我们还需要注意一

【BZOJ2326】[HNOI2011]数学作业 矩阵乘法

[BZOJ2326][HNOI2011]数学作业 题解:对于位数相同的数字,这显然是满足矩乘性质的. 那么我们枚举每一位,如果当前i=10^k,那么维护行向量(sum,now,1),now代表当前的数,每次将sum*=i再加上now,now+=1即可. #include <cstdio> #include <cstring> #include <iostream> using namespace std; typedef long long ll; ll n,P; st

洛谷P3216 [HNOI2011]数学作业

洛谷P3216 [HNOI2011]数学作业 题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 N 和 M,要求计算 Concatenate (1 .. N) Mod M 的值,其中 Concatenate (1 ..N)是将所有正整数 1, 2, -, N 顺序连接起来得到的数.例如,N = 13, Concatenate (1 .. N)=12345678910111213.小C 想了大半天终于意识到这是一道不可能手算出来的题目,于是他只好向你求助,

[HNOI2011]数学作业

题目描述 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 N 和 M,要求计算 Concatenate (1 .. N) Mod M 的值,其中 Concatenate (1 ..N)是将所有正整数 1, 2, -, N 顺序连接起来得到的数.例如,N = 13, Concatenate (1 .. N)=12345678910111213.小C 想了大半天终于意识到这是一道不可能手算出来的题目,于是他只好向你求助,希望你能编写一个程序帮他解决这个问题. 输入输