Cod sursa(job #2506414)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 8 decembrie 2019 01:56:39
Problema A+B Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.1 kb
#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define pii pair <int,int>
#define mp make_pair
#define pb push_back
#define x first
#define y second

using namespace std;

const int Nmax = 2e5+5;
const ll MOD = 998244353;
int v[Nmax];
ll fct[Nmax];

template <class T, class U>
T lg_pow(T a, T n, U M){

    T ans=1;
    while(n){

        if(n&1)
            ans=(ans*a)%M;
        n>>=1;
        a=(a*a)%M;
    }
    return ans;
}

ll comb(int n, int k){

    ll p1 = fct[n];
    ll p2 = (fct[n - k] * fct[k]) % MOD;
    return (p1 * lg_pow(p2, MOD - 2, MOD)) % MOD;
}

int main(){

    /*ios_base :: sync_with_stdio(false);
    cin.tie(nullptr);
    mt19937 rng(chrono::steady_clock :: now().time_since_epoch().count());
    uniform_int_distribution <int> _random(1,INT_MAX);
    //freopen("x.in", "r", stdin);
    //freopen("x.out", "w", stdout);

    int n, k;
    cin >> n >> k;
    fct[0] = 1LL;
    for(int i = 1; i <= n; ++i){

        cin >> v[i];
        fct[i] = (fct[i - 1] * i) % MOD;
    }

    if(k == 1){

        cout << 0;
        return 0;
    }

    vector <int> w;
    for(int i = 1; i <= n; ++i){

        if(v[i] != v[i % n + 1])
            w.pb(v[i]);
    }

    ll ans = 0;
    for(int i = 0; i < (int)w.size(); ++i){1

        ll p1 = lg_pow(1LL * k - 2, 1LL * i, MOD);
        ll p2 = comb((int)w.size(), i);
        ll p3;
        if(((int)w.size() - i) & 1)
            p3 = lg_pow(2LL, 1LL * ((int)w.size() - i - 1), MOD);
        else{

            ll x = lg_pow(2LL, 1LL * ((int)w.size() - i), MOD);
            ll y = comb((int)w.size() - i, ((int)w.size() - i) >> 1);
            x = (x - y + MOD) % MOD;
            p3 = (x * lg_pow(2LL, MOD - 2, MOD)) % MOD;
        }

        ll p = (((p1 * p2) % MOD) * p3) % MOD;
        ans = (ans + p) % MOD;
    }

    ans = ans * lg_pow(k * 1LL, 1LL * (n - (int)w.size()), MOD) % MOD;
    cout << ans;*/
    freopen("adunare.un", "r",stdin);
    freopen("adunare.out","w",stdout);
    int a, b;
    cin >> a >> b;
    cout << a + b;

    return 0;
}