4146: One Time Swap

文件提交:无需freopen 内存限制:128 MB 时间限制:1.000 S
评测方式:普通裁判
金币值:
命题人:
提交:12 解决:0

题目描述

# One Time Swap ### 内存 1024MB ### 时间 2S ## 题目描述 配套书籍购买链接:https://item.jd.com/10127270863925.html 你得到一个字符串 $S$。找出通过执行以下操作**恰好一次**可以得到的不同字符串的数量。 - 设 $N$ 为 $S$ 的长度。选择一对整数 $(i,j)$,满足 $1 \leq i < j \leq N$,并交换 $S$ 的第 $i$ 个和第 $j$ 个字符。 在本题的约束条件下,可以证明你总是可以执行这个操作。 ## 输入格式 输入$S$。 ## 输出格式 输出通过在 $S$ 上执行上述操作恰好一次可以得到的不同字符串的数量。 ## 输入输出样例 ### 输入样例1 ``` abc ``` ### 输出样例1 ``` 3 ``` ### 输入样例2 ``` aaaaa ``` ### 输出样例2 ``` 1 ``` ## 数据范围与提示 【样例1说明】 $S$ 的长度为 $3$,所以满足 $1 \leq i < j \leq 3$ 的整数对 $(i,j)$ 有三个:$(1,2)$、$(1,3)$ 和 $(2,3)$。 - 交换 $S$ 的第 1 个和第 2 个字符得到 `bac`。 - 交换 $S$ 的第 1 个和第 3 个字符得到 `cba`。 - 交换 $S$ 的第 2 个和第 3 个字符得到 `acb`。 因此,对 `abc` 进行操作可以得到三个字符串:`bac`、`cba` 和 `acb`,所以打印 $3$。 【样例2说明】 交换任意两个字符都会使 $S$ 保持为 `aaaaa`。因此,只有一个字符串可以通过操作得到。 【数据范围】 $2 \le S \le 10^6$,$S$仅由小写英文字母组成。 ## 题目来源 ABC345C