1 条题解

  • 0
    @ 2025-5-5 0:04:05

    题意分析

    1. 多项式除法与余式
      (1)多项式a(x)a(x)除以xk+1x^{k+1}的余式r(x)r(x),其最高次数不超过kk。 (2)数学表达式:$$a(x) = q(x) \cdot x^{k+1} + r(x), \quad \deg(r) \leq k. $$因此,r(x)r(x)就是a(x)a(x)去掉所有xk+1x^{k+1}及更高次项后的部分。

    解题思路

    1、直接截断a(x)a(x),保留前k+1k+1项(即a0+a1x++akxka_0 + a_1 x + \dots + a_k x^k)。

    • 如果knk \geq n,则余式就是a(x)a(x)本身。

    2、边界情况

    • 如果k=0k = 0,余式就是常数项a0a_0
    • 如果a(x)=0a(x) = 0,余式为00

    C++代码实现

    #include <iostream>
    #include <cstdio>
    using namespace std;
    const int maxn = 10010;
    int main()
    {
        int n,k;
        int val[maxn];
        while(scanf("%d%d",&n,&k)!=EOF,n!=-1 || k !=-1)
        {
            int i;
            for(i = 0 ; i <= n ; ++i)
            {
                scanf("%d",&val[i]);
            }
            //进行除法运算
            for(i = n ; i >= k ; --i)
            {
                if(val[i] == 0)
                {
                    continue;
                }
     
                val[i-k] = val[i-k] - val[i];
                val[i] = 0;
            }
            //调整数组长度,即高位的0不用输出
            int t = n;
            while(val[t] == 0 && t > 0)
            {
                --t;
            }
            for(i = 0 ; i < t ; ++i)
            {
                printf("%d ",val[i]);
            }
            printf("%d\n",val[t]);
        }
        return 0;
    }
    
    • 1

    信息

    ID
    1528
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者