#P2789. Pixel Shuffle

Pixel Shuffle

本题没有可用的提交语言。

题目描述

对位图图像的像素进行洗牌(重排列)有时会生成看似随机的图像。然而,重复洗牌足够多次后,最终会恢复原始图像。这并不奇怪,因为“洗牌”意味着对图像的像素应用一一映射(或置换),而像素数量是有限的。

问题
你的程序需要读取一个整数 ( n ) 和一系列基本变换,这些变换定义了一个 ( n \times n ) 图像的“洗牌”置换 ( \phi )。你需要计算最小的正整数 ( m ),使得应用 ( m ) 次 ( \phi ) 后总是能恢复原始图像。

例如,若 ( \phi ) 是逆时针90度旋转,则 ( m = 4 )。

输入

输入由两行组成:

  1. 第一行是整数 ( n )(( 2 \leq n \leq 210 ),且 ( n ) 为偶数),表示图像的尺寸为 ( n \times n )。像素矩阵为 ( (a_{ji}) ),其中 ( i ) 是行号,( j ) 是列号,左上角像素位于行0、列0。
  2. 第二行是一个非空单词列表(最多32个单词),单词由空格分隔。有效单词包括关键字 idrotsymbhsymbvsymdivmix,或带 - 后缀的关键字(表示逆变换)。每个关键字 key 表示一个基本变换,key- 表示其逆变换。列表 ( k_1, k_2, \dots, k_p ) 表示复合变换 ( \phi = k_1 \circ k_2 \circ \dots \circ k_p )。

输出

输出一个整数 ( m ),即最小正整数,使得 ( \phi^m ) 是恒等变换。保证 ( m < 2^{31} )。

输入示例 1

256  
rot- div rot div  

输出示例 1

8  

来源

Southwestern Europe 2005