#include <cstdio>
#include <iostream>
#include <algorithm>
#include <algorithm>
#include <vector>
#include <queue>
#include <cctype>
#include <cmath>
#include <cstring>
#include <stack>
#include <tuple>
#include <numeric>
#define forn(i, n) for(int i = 0; i < int(n); ++i)
using namespace std;
using ll = long long;
template <typename T> void read(T & x){
x = 0; int op = 1; char ch = getchar();
while (!isdigit(ch)){ if (ch == '-') op = -1; ch = getchar();}
while (isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48); ch = getchar();}
x*= op;
}
const ll mod = 998244353;
ll fib(int n){
ll f[2] = {1, 1};
for (int i = 3; i <= n; ++i) {
f[i & 1] += f[(i - 1) & 1];
f[i & 1] %= mod;
}
return f[n & 1];
}
ll qpow(ll a, ll b){
ll res = 1;
while (b){
if (b & 1) res = res * a % mod;
a = a * a % mod;
b >>= 1;
}
return res;
}
ll inv(ll x){
return qpow(x, mod - 2);
}
void solve(){
ll n;
cin >> n;
cout << fib(n) * inv(qpow(2, n)) % mod << endl;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t = 1;
while (t--){
solve();
}
}
CF1452D. Radio Towers
最新推荐文章于 2021-10-26 21:54:58 发布