[多项式]ACM-T6-n阶方程

题面

题目描述

现有一个一元高阶方程:
a 0 + a 1 ∗ x + a 2 ∗ x 2 + . . . + a n ∗ x n = 0 a_0+a_1*x+a_2*x^2+...+a_n*x^n=0 a0+a1x+a2x2+...+anxn=0
现给出数字 m m m,求出此方程在 [ 1 , m ] [1,m] [1,m]以内的整数解。

输入格式

第一行包含 2 2 2个整数 n n n m m m,每两个整数之间用一个空格隔开。
接下来的 n + 1 n+1 n+1行每行包含一个整数,依次为 a 0 a_0 a0, a 1 a_1 a1, a 2 a_2 a2, . . . ... ..., a n a_n an

输出格式

第一行输出方程在 [ 1 , m ] [1,m] [1,m]内的整数解的个数。
接下来每行一个整数,按照从小到大的顺序依次输出方程在 [ 1 , m ] [1,m] [1,m]内的一个整数解。

解题思路

秦九韶公式

秦九韶公式-百度百科
这个公式是一个简化多项式的一种算法,详细如下

     a 0 + a 1 ∗ x + a 2 ∗ x 2 + . . . + a n ∗ x n \ \ \ \ a_0+a_1*x+a_2*x^2+...+a_n*x^n     a0+a1x+a2x2+...+anxn
= a 0 + x ( a 1 + a 2 ∗ x + . . . + a n ∗ x n − 1 ) =a_0+x(a_1+a_2*x+...+a_n*x^{n-1}) =a0+x(a1+a2x+...+anxn1)
= a 0 + x ( a 1 + x ( a 2 + a 3 ∗ x + . . . + a n ∗ x n − 2 ) ) =a_0+x(a_1+x(a_2+a_3*x+...+a_n*x^{n-2})) =a0+x(a1+x(a2+a3x+...+anxn2))
… … ……
= a 0 + x ( a 1 + x ( a 2 + x ( a 3 + . . . + x ( a n − 1 + x ( a n ) ) . . . ) =a_0+x(a_1+x(a_2+x(a_3+...+x(a_{n-1}+x(a_n))...) =a0+x(a1+x(a2+x(a3+...+x(an1+x(an))...)

这样子可以很好的优化时间复杂度

模数

本来暴力就可以过题,但是因为数据太大了
要对答案摸一个数才能判是否是0,
但是如果这个数刚好是这个模数的倍数,那就不行了

几个大质数
1000000007
1000000009
1000000021
1000000033
1000000087
1000000093

从里面任意选两个都可以爆 U l o n g l o n g U long long Ulonglong
所以同时摸两数且同时为零,那么应该就是零了 (万一不是,请模三个)

代码

暂无

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值