Definim un număr natural ca fiind bun dacă toate cifrele impare se află înaintea celor pare. De exemplu, numerele 13424
, 400
, 1357
sunt bune, pe când 34010
nu este.
Cerința
Dându-se un număr natural nenul n
, să se determine câte numere bune de n
cifre există. Pentru că acest număr poate fi foarte mare, se va determina răspunsul modulo 123457
.
Date de intrare
Programul citește de la tastatură numărul n
.
Date de ieșire
Programul va afișa pe ecran numărul de numere bune de n
cifre, modulo 123457
.
Restricții și precizări
- Pentru
70%
din punctaj,1 ≤ n ≤ 100.000
- Pentru
30%
din punctaj,100.001 ≤ n ≤ 1.000.000.000
Exemplu
Intrare
3
Ieșire
475
#include <bits/stdc++.h> using namespace std; int MOD = 123457; int main() { int p; long long int a = 5, sol1 = 1, sol2 = 1; cin >> p; int n = 5; if(p == 1) cout << 10; else{ for(int i = 0; (1<<i) <= p; ++i){ if( ((1<<i) & p) > 0) sol1= (sol1 * a) % MOD; a=(a * a) % MOD; } sol1 = (1LL * p * sol1) % MOD; a=n; for (int i = 0; (1<<i) <= p-1; ++ i){ if( ((1<<i) & (p-1)) > 0) sol2= (sol2 * a) % MOD; a=(a * a) % MOD; } sol2 = (1LL * sol2 * 4) % MOD; cout << (1LL * (sol1 + sol2)) % MOD; } }