#J1069a. Fork(fork)

Fork(fork)

Fork(fork)

【题目描述】

有一天,小明问神犇:《深入理解计算机系统》太厚了,看不完,能给我讲一下子进程吗?

神犇:很简单啊,你就先这个,再那个,再那个那个就好了

小明:哦哦哦哦,我懂了

你:?

于是,你问了他一道题。

fork() 函数是在 UNIX 和类 UNIX 操作系统中创建新进程的方法之一。

调用 fork() 函数会创建一个与原始进程完全相同并且运行位置完全相同的子进程。

我们可以理解成调用fork()函数,会将程序一模一样复制一份,在新的子进程中执行,运行到当前部分,继续运行接下来的代码,而原代码还会继续运行。子进程和原进程接下来的操作完全相同,所以子进程也可以像原进程一样“复制”。

现在有一个代码,里面只是 nn 个fork()函数,当我们执行到最后,我们会得到多少个进程?

int main() {
	for(int i=1;i<=n;++i) {
		fork();
    }
}

【输入格式】

一个整数nn

【输出格式】

一个整数,表示答案数量,对998244353998244353取模

【样例 11 输入】

1

【样例 11 输出】

2

【样例 22 输入】

2

【样例 22 输出】

4

【样例 33 输入】

3

【样例 33 输出】

8

【子任务】

对于50%50\%的数据,1n201\le n\le 20

对于80%80\%的数据,1n1061\le n\le 10^6

对于100%100\%的数据,1n10181\le n\le 10^{18}