Codeforces 1316 C. Primitive Primes

在这里插入图片描述
在这里插入图片描述

题意:

给出了两个多项式的系数,求两个多项式相乘后问系数不能被 p p p 整除的幂的值

  • 高斯引理:两个本原多项式的乘积仍为本原多项式.
  • 本原多项式:满足所有系数的最大公因数为 1 1 1 的多项式

a i a_i ai表示第一个多项式的 i i i 次方的系数 b i b_i bi表示第二个多项式的 i i i 次方的系数
c i c_i ci表示相乘后 i i i 次方的乘积后的系数

c i = a ∗ b i + a 1 ∗ b i − 1 + … + a i − 1 ∗ b 1 + a i ∗ b 0 c_i=a*b_i+a_1*b_{i-1}+…+a_{i-1}*b_1+a_i*b_0 ci=abi+a1bi1++ai1b1+aib0
每个项都有 a 0 a_0 a0 a i − 1 a_{i-1} ai1 b 0 b_0 b0 b j − 1 b_{j-1} bj1 的一部分
找到一个找到不可被 p p p 整除的 c t c_t ct,意思是 c t % p ! = 0 c_t\%p!=0 ct%p!=0,即 a % p ! = 0 , b % p ! = 0 a\%p!=0,b\%p!=0 a%p!=0,b%p!=0,
我们找到第一个符合的,记为 a i a_i ai b j b_j bj。在此之前全部系数都可以被 p p p 整除,
当系数为 ( i + j ) (i+j) (i+j) 时, c t = a 0 ∗ b i + j + a 1 ∗ b i + j − 1 + . . . + a i ∗ b j + . . . + a i + j ∗ b 0 c_t=a_0*b_{i+j}+a_{1}*b_{i+j-1}+...+a_i*b_j+...+a_{i+j}*b_0 ct=a0bi+j+a1bi+j1+...+aibj+...+ai+jb0
此时只有 a i ∗ b j a_i*b_j aibj 不可被 p p p 整除,其他的都可以。
所以一定有 c t % p ! = 0 c_t\%p!=0 ct%p!=0
给出的是本原多项式就是保证了不是所有系数数都能整除任何一个 m o d mod mod ,这样 a , b a,b ab 序列都可以找到至少一个满足的下标。

AC代码:

int n, m, p;
int ans, res, x;

int main()
{

    n = read();
    m = read();
    p = read();
    ans = -1;
    rep(i, 1, n)
    {
        x = read();
        if (ans == -1 && x % p)
            ans = i - 1;
    }
    res = -1;
    rep(i, 1, m)
    {
        x = read();
        if (res == -1 && x % p)
            res = i - 1;
    }
    Out(ans + res);
    return 0;
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值