P1648 炼丹术

这道题目描述了一种炼丹术的问题,其中三水需要找出所有可能的稳定丹方。每种药材需要另一种药材来使其稳定,任务是确定有多少种不同的稳定组合,保证每个药材只作为稳定剂出现一次。输入包括药材的数量和它们的稳定剂信息,输出是对998244353取模后的稳定丹方案例数量。
摘要由CSDN通过智能技术生成

题目描述

三水最近在学习炼丹术。但是众所周知炼丹术是一门危险的学科,需要大量的调参才能保证安全。好在三水在洗衣机里面找到了一张失传已久的图纸,里面记录了若干种材料的药性。这张图纸上记录了 nn 种不同的药材,对于每种药材,都需要恰好一种药材来使其稳定 (这种药材可能是其自身,即这种药材本身就很稳定)。三水想知道,通过这张图纸,可以得到多少种不同的稳定的丹方。保证每种药材只会作为稳定剂出现一次。

我们认为一个丹方是从 nn 种药材中选择若干种 (不为 0 ),两个丹方被认为是不同的当且仅当存在一种药材在其中一个丹方中且不在另一个中。我们称一个丹方是稳定的,当且仅当所有出现在丹方中的药材的稳定剂也在药材中。

因为输出结果可能很大,所以答案对 998244353 取模。

输入描述

第一行一个数字 nn , 表示有 n(1⩽n⩽106) 种不同的药材。 接下来一行 nn 个数字,第 i 数字  ai​(1⩽ai​⩽n) 表示药材 i 的稳定剂是 ai​,保证输入是 1 到 n 的一个全排列。

输出描述

一个整数 n ,表示答案对 998244353 取模的结果。

样例输入

Copy to Clipboard
6 2 3 4 5 6 1 

样例输出

Copy to Clipboard
1
/*
 * @Description: To iterate is human, to recurse divine.
 * @
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值