

翻译:
坐标线上有𝑛+2个城镇,编号从0到𝑛+1。𝑖-th镇位于𝑖点。
你在城镇1、2、…、𝑛以12的概率建造一个无线电塔(这些事件是独立的)。之后,您希望将每个塔上的信号功率设置为从1到𝑛的某个整数(信号功率不一定相同,但也不一定不同)。信号从位于城镇𝑖的信号功率𝑝的塔到达每个城市𝑐,这样|𝑐−𝑖|<𝑝。
在建立塔之后,你想要这样选择信号功率:
城镇0和𝑛+1没有从无线电塔接收到任何信号;
 城镇1、2、…、𝑛分别从一个无线电发射塔接收信号。
 例如,如果𝑛=5,并且您已经在城镇2、4和5中建造了塔,那么您可以将城镇2中的塔的信号功率设置为2,将城镇4和5中的塔的信号功率设置为1。这样,城镇0和𝑛+1不会从任何塔接收信号,城镇1、2和3从城镇2的塔接收信号,城镇4从城镇4的塔接收信号,城镇5从城镇5的塔接收信号。
计算这样的概率:在建造了信号塔之后,你将有办法设置信号功率以满足所有限制条件。
输入
 输入的第一行(也是唯一一行)包含一个整数𝑛(1≤𝑛≤2⋅105)。
输出
 打印一个整数-有一种方法可以设置信号功率,以满足所有约束条件的概率,对998244353取模。
形式上,概率可以表示为不可约分数𝑥𝑦。你需要打印𝑥⋅𝑦−1mod998244353的值,其中𝑦−1是一个整数,使得𝑦⋅𝑦−1mod998244353=1。
例子
 inputCopy
 2
 outputCopy
 748683265
 inputCopy
 3.
 outputCopy
 748683265
 inputCopy
 5
 outputCopy
 842268673
 inputCopy
 200000
 outputCopy
 202370013
 请注意
 第一个例子的真实答案是14:
概率是14,塔建在1号镇和2号镇,所以我们可以把它们的信号功率设为1。
 第二个例子的实际答案是14:
概率为18,塔建在城镇1、2和3,所以我们可以将它们的信号功率设置为1;
 在概率为18的情况下,城镇2只建造了一座塔,我们可以将其信号功率设置为2。
 第三个例子的正确答案是532。请注意,尽管前面的解释对所有塔使用相同的信号功率,但事实并非如此。例如,如果𝑛=5,城镇2、4和5有塔,则可以将城镇2的塔的信号功率设置为2,城镇4和5的塔的信号功率设置为1。
思路:
这道题,我是类似于打表写出来的,证明的话,可以去看下别的博客。
可以手推一下,
1 的话是 1
2 的话是 1
3 的话是 2
4的话是 3
5的话是 5
然后分母可以直接算,然后乘逆元。
代码:
/*Looking! The blitz loop this planet to search way
 
 Only my RAILGUN can shoot it 今すぐ
 
 身体中を  光の速さで
 
 駆け巡った確かな予感
 
 掴め! 望むものなら残さず
 
 輝ける自分らしさで
 
 信じてるよ  あの日の誓いを
 
 この瞳に光る涙それさえも  強さになるから
 
 */
#include <iostream>
#include <algorithm>
#include <string.h>
#include <string>
#include <math.h>
#include <stdio.h>
#include<vector>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<tuple>
#include<numeric>
using namespace::std;
typedef long long  ll;
inline __int128 read(){
    __int128 x = 0, f = 1;
    char ch = getchar();
    while(ch < '0' || ch > '9'){
        if(ch == '-')
            f = -1;
        ch = getchar();
    }
    while(ch >= '0' && ch <= '9'){
        x = x * 10 + ch - '0';
        ch = getchar();
    }
    return x * f;
}
inline void print(__int128 x){
    if(x < 0){
        putchar('-');
        x = -x;
    }
    if(x > 9)
        print(x / 10);
    putchar(x % 10 + '0');
}
const ll N=998244353;
int n;
ll s[200005];
ll ksm(ll x,ll y){
    ll oper=1;
    while (y) {
        if (y&1) {
            oper=oper*x%N;
        }
        x=x*x%N;
        y>>=1;
    }
    return oper;
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(); cout.tie();
    cin>>n;
    s[1]=s[2]=1;
    for (int i =3; i<=n; i++) {
        s[i]=(s[i-1]+s[i-2])%N;
    }
    ll kl=ksm(2, n);
    kl=ksm(kl, N-2);
    printf("%lld\n",s[n]*kl%N);
    return 0;
}





![[网鼎杯 2020 白虎组]PicDown(任意文件读取)](https://img-blog.csdnimg.cn/a14cb4dd6ec5410dbbd7d561c2a2ae4d.png)











