Codeforces 1316C Primitive Primes

题目链接

mathforces round Gauss's lemma

说人话就是,高斯引理的多项式目,就是两个本原多项式(primitive polynomial)的乘积还是本原多项式,而本原多项式就是\(f(x) = a_0 + a_1x + \dots + a_{n-1}x^{n-1}\), \(gcd(a_0, a_1, \dots, a_{n-1}) = 1\), 知道这个定理, 直接对两个本原多项式找p的不可约元, 相乘也是p的不可约元, 我对着FFT调到天荒地老

#include<bits/stdc++.h>
using namespace std;
#define ms(x,y) memset(x, y, sizeof(x))
#define lowbit(x) ((x)&(-x))
typedef long long LL;
typedef pair<int,int> pii;



void run_case() {
    int n, m, p;
    cin >> n >> m >> p;
    vector<int> a(n), b(m);
    for(auto &x: a) cin >> x;
    for(auto &x: b) cin >> x;
    int ans1, ans2;
    for(int i = 0; i < n; ++i)
        if(a[i] % p) ans1 = i;
    for(int i = 0; i < m; ++i)
        if(b[i] % p) ans2 = i;
    cout << ans1+ans2;    
}

int main() {
    ios::sync_with_stdio(false), cin.tie(0);
    cout.flags(ios::fixed);cout.precision(2);
    //int t; cin >> t;
    //while(t--)
    run_case();
    cout.flush();
    return 0;
}
posted @ 2020-03-08 19:48  GRedComeT  阅读(114)  评论(0编辑  收藏  举报