题意:给出26个大写字母的置换B,问是否存在一个置换A,舍得A^2=B,如果存在输出Yes,否则输出No

题解:

  研究一下置换A与A^2关系。

  假设A=(a1 a2 a3)(b1 b2 b3 b4)

  A^2=(a1 a2 a3)(b1 b2 b3 b4)(a1 a2 a3)(b1 b2 b3 b4)

  不相交的循环乘法满足交换律。

  A^2=(a1 a2 a3)(a1 a2 a3)(b1 b2 b3 b4)(b1 b2 b3 b4)

  奇数的两个合并一定是奇数

  偶数二个变两个。

  所以:两个长度为n的相同循环相乘,当n为奇数结果也是一个长度为n的循环。

  当n为偶数,分裂分为两个长度为n/2的循环。

  对于n为奇数,可以找到两个奇数循环,使得A^2=B

  因为n为偶数的循环只能是两个长度为2n的循环分裂而成的。所以对于任意偶数长度,

  循环个数必须是偶数才能配对。

 #include<cstdio>
#include<cmath>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std; int vis[],cnt[];
char b[]; int main()
{
int cas;scanf("%d",&cas);
while(cas--)
{
scanf("%s",b);
memset(vis,,sizeof(vis));
memset(cnt,,sizeof(cnt));
for (int i=;i<;i++)
if (!vis[i])
{
int j=i,n=;
do{
vis[j]=;
j=b[j]-'A';
n++;
}while(j!=i);
cnt[n]++;
}
int flag=;
for (int i=;i<=;i+=)
if (cnt[i]%==) flag=;
if (flag) printf("Yes\n");
else printf("No\n");
}
}

最新文章

  1. git开发流程、常用命令及工具、TortoiseGit使用及常见问题
  2. drozer安装之夜深模拟器
  3. Foix_Reader_6.0|PDF阅读器
  4. Python 的命令行参数处理 optparse-&gt;argparse
  5. AX 获得当前Grid的数据源的记录行数
  6. 从今天开始每天刷一题,并写在这里 分类: ACM 2015-06-16 23:52 14人阅读 评论(0) 收藏
  7. 概率质量函数:怀孕周期的PMF
  8. android R.id.转化为view
  9. Gartner Publishes 2014 Magic Quadrant for SIEM and Critical Capabilities for SIEM Reports
  10. 论深度优先(DFS)和广度优先搜索(BF)的优点及不足(更新ing)
  11. 项目DEMO下载
  12. [C/C++语言标准] ISO C99/ ISO C11/ ISO C++11/ ISO C++14 Downloads
  13. ORACLE时间日期格式使用总结(参考网上资料汇总)
  14. day 21 垃圾回收机制、标记删除及分代回收
  15. FPGA——流水灯(一)
  16. 终于明白word-break属性——break-all和break-word的区别
  17. 海康威视笔试(C++)
  18. PAT 天梯赛 是否完全二叉搜索树&#160;&#160;&#160;(30分)(二叉搜索树 数组)
  19. gitlab 灾备
  20. CentOS7使用yum安装nginx

热门文章

  1. CF778B(round 402 div.2 E) Bitwise Formula
  2. Pow挖矿流程
  3. 正确使用MySQL JDBC setFetchSize()方法解决JDBC处理大结果集 java.lang.OutOfMemoryError: Java heap space
  4. JavaScript也谈内存优化
  5. 洛谷P1724 东风谷早苗
  6. Hadoop 常用命令之 HDFS命令
  7. MySQL数据表查询操作
  8. python基础一 day9 函数升阶(2)
  9. css--css选择器,伪类
  10. Vue之组件的使用