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

    科技2025-04-08  16

    [多项式]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, 但是如果这个数刚好是这个模数的倍数,那就不行了

    几个大质数100000000710000000091000000021100000003310000000871000000093

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

    代码

    暂无

    Processed: 0.016, SQL: 8