363
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;
}
}
Comentarii