DTOJ3026 geronimo

  • 题目
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例
      • 样例输入
      • 样例输出
    • 数据范围与提示
  • 题解

题目

题目描述

“Geronimo∼”
时间还很多,让我们慢慢来。
不如听首开心的歌再看题?…算了,直接看题吧
给定一个整数nnn,以及一个nnn阶的排列p1,p2,...,pnp_1,p_2,...,p_np1​,p2​,...,pn​
我们定义重组过程如下:如果当前的排列是a1,a2,...,ana_1,a_2,...,a_na1​,a2​,...,an​,经过一次重组,就会变成pa1,pa2,...,panp_{a_1},p_{a_2},...,p_{a_n}pa1​​,pa2​​,...,pan​​
问一个排列至少要经过多少次重组才会恢复成重组前的状态
由于答案可能很大,输出其对一个给定的正整数qqq取模的值即可

输入格式

第一行两个正整数n,qn,qn,q
第二行一共nnn个整数,依次表示p1,p2,...,pnp_1,p_2,...,p_np1​,p2​,...,pn​
同一行相邻的数间用一个空格隔开

输出格式

一行一个整数,表示答案对qqq取模的值

样例

样例输入

7 1000000207
2 6 5 1 3 4 7

样例输出

4

数据范围与提示

对于全部的数据,q⩽2×109q\leqslant 2\times 10^9q⩽2×109
对于10%10\%10%的数据,q=1q=1q=1
对于另外20%20\%20%的数据,n⩽9n\leqslant 9n⩽9
对于另外40%40\%40%的数据,n⩽103n\leqslant 10^3n⩽103
对于剩下30%30\%30%的数据,n⩽5×105n\leqslant 5\times 10^5n⩽5×105

题解

先求出每一个点要循环几次才能回到原位,然后直接去一个LCM就好了
不能用传统的GCD,因为需要取模!必须用唯一分解定理
附上代码:

#include<algorithm>
#include<cstdio>
using namespace std;
int n,MOD,s,maxs,a[500010],f[500010],sum[500010],p[500010],v[500010];
long long ans=1,P[500010];
int main()
{scanf("%d%d",&n,&MOD);for(int i=1;i<=n;i++) scanf("%d",&a[i]);for(int i=1,x;i<=n;i++){if(f[i]) continue;x=i;for(int j=1;;j++){if(sum[x]) break;if(!f[x]) f[x]=j;else sum[x]=j-f[x];x=a[x];}}for(int i=1;i<=n;i++) maxs=max(maxs,sum[i]);for(int i=2;i<=maxs;i++){if(v[i]) continue;p[++s]=i,P[s]=1;for(int j=i;j<=maxs;j+=i) v[j]=1;}sort(sum+1,sum+1+n);for(int i=1;i<=n;i++){if(sum[i]==sum[i-1]) continue;for(int j=1;j<=s;j++){long long ppa=1,Sum=sum[i];while(Sum%p[j]==0) Sum/=p[j],ppa=ppa*p[j]%MOD;P[j]=max(P[j],ppa);}}for(int i=1;i<=s;i++) ans*=P[i],ans%=MOD;printf("%lld",ans);
}

DTOJ3026 geronimo相关推荐

  1. Derby 和 Geronimo 使用感觉

    春节回家,终于可以不考虑工作上的事情.除了可以看看电影这7天还可以花时间测试一下derby和Geronimo的功能.这些天我做了两个实验,第一个是Derby的功能测试,另外我也尝试了一下 Geroni ...

  2. Corolado软件峰会关于Geronimo的介绍

    Geronimo的架构是使用一个Kernel 然后,其他都以GBeans的方式作为插件.这样他的架构就非常灵活.一下是几种可能的配置 Tomcat + Derby + Jetspeed + Activ ...

  3. [转载]使用 XMLBeans 在 Apache Geronimo 中部署 SOA 应用程序

    使用 XMLBeans 在 Apache Geronimo 中部署 SOA 应用程序 对 XMLBeans 好奇吗?这种高级易用的 XML-Java 绑定技术允许您像访问任何 Java™ 对象或 Ja ...

  4. Apache Geronimo Remote Code Execute Vulnerability

    简介: Apache Geronimo 是 Apache 软件基金会的开放源码J2EE服务器,它集成了众多先进技术和设计理念. 这些技术和理念大多源自独立的项目,配置和部署模型也各不相同. Geron ...

  5. [转载]权衡 Apache Geronimo EJB 事务选项,第 3 部分: 综合所有事务

    权衡 Apache Geronimo EJB 事务选项,第 3 部分: 综合所有事务 Jonathan Sagorin 在 由三部分组成的系列文章 的最后一部分中对 Enterprise Java™B ...

  6. Geronimo XBean

    1 Overview XBean是Apache Geronimo的子项目,目标是像Eclipse IDE那样,用于创建基于插件的服务器(跟Geronimo GBean的目标有些重合).从现状来看,XB ...

  7. java.lang.NoClassDefFoundError: org/apache/geronimo/mail/util/Base64Encod——解决方案

    最近在弄通过javaMail发送信息到邮箱,老是会报这样的错误:Exception in thread "main" java.lang.NoClassDefFoundError: ...

  8. Apache Geronimo 介绍

    Apache Geronimo 介绍 1. Apache Geronimo 是 Apache 软件基金会的开放源码J2EE服务器,它集成了众多先进技术和设计理念.

  9. 浅谈Geronimo的现状

    时间过得真快,转眼间Geronimo(名字来源:阿帕切人的领袖,他反对美国政府的政策,以通过在西南部领导一系列对墨西哥人和美国人定居地的袭击来巩固其族人的居留地)已经开发了1年多了,目前最新版本是于去 ...

  10. Apache Geronimo读音及含义

    Geronimo 恐怕很多人不会读吧,在GRE上也难以看到,知道它含义的人又有多少?看看下面的解释吧,小孙的信息可是来自权威的资料. Apache大家都知道是北美一个著名的印第安人部落.他们以英勇无畏 ...

最新文章

  1. iOS UITableView的方法解析
  2. 数据库的日常管理经验浅谈
  3. SpringMVC的请求-文件上传-单文件上传的代码实现2
  4. REVERSE-COMPETITION-HGAME2022-Week4
  5. centos 6.5 安装 lamp 后mysql不能启动_CentOS 6.5 系统 LAMP(Apache+MySQL+PHP)安装步骤
  6. 相机标定(1)内\外参矩阵和畸变矩阵
  7. s:property=a value=/取的s:debug/s:debug中的value stack中的属性值
  8. 嵌入式实时操作系统Ucos3
  9. Linux中vectormath无法通过pip安装的解决办法
  10. 29留数及其应用(五)
  11. LNMP的403问题总结
  12. 获取url路径上的参数,(避免中文乱码)
  13. 【科研小技巧|知网】如何下载 PDF 格式的学位论文
  14. sublime text3 boxy主题 (本地 压缩包 安装)
  15. extjs3.0与extjs4.0区别
  16. Halcon 算子 convexity
  17. 中科曙光 量子计算机,中科曙光 量子计算机 量子计算机的曙光
  18. LTE学习-信道估计(LS算法)
  19. 基于matlab的数值分析实例研究,基于MATLAB的数值分析答辩.ppt
  20. linux学习 - 如何确定是否是 Centos 系统

热门文章

  1. 计算指定位数的圆周率
  2. 基于XTerm模拟发包实现
  3. centos7中添加大硬盘(超过2T)分区
  4. operator开发流程
  5. 关于《未来软件是什么样子?》一文的讨论(2)
  6. 服务器raid卡维修,服务器Raid卡故障|服务器RAID卡坏恢复数据
  7. python打字_Python编写打字训练小程序
  8. matlab斯奈尔定律,斯奈尔定律和Zoeppritz方程
  9. Uptime Kuma一款开源监控工具
  10. 逆腹式呼吸-用气发力气先行