Infoplane in Tina Town

Time Limit: 14000/7000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)

Total Submission(s): 805    Accepted Submission(s): 168

Problem Description
There is a big stone with smooth surface in Tina Town. When people go towards it, the stone surface will be lighted and show its usage. This stone was a legacy and also the center of Tina Town’s calculation and control system. also,
it can display events in Tina Town and contents that pedestrians are interested in, and it can be used as public computer. It makes people’s life more convenient (especially for who forget to take a device).



Tina and Town were playing a game on this stone. First, a permutation of numbers from
1
to n
were displayed on the stone. Town exchanged some numbers randomly and Town recorded this process by macros. Town asked Tine,”Do you know how many times it need to turn these numbers into the original permutation by executing this macro? Tina didn’t know the
answer so she asked you to find out the answer for her.



Since the answer may be very large, you only need to output the answer modulo
3∗230+1=3221225473
(a prime).
 
Input
The first line is an integer
T
representing the number of test cases. T≤5



For each test case, the first line is an integer n
representing the length of permutation. n≤3∗106



The second line contains n
integers representing a permutation A1...An.
It is guaranteed that numbers are different each other and all
Ai
satisfies ( 1≤Ai≤n
).
 
Output
For each test case, print a number
ans
representing the answer.
 
Sample Input
2
3
1 3 2
6
2 3 4 5 6 1
 
Sample Output
2
6
 
Source
 
Recommend
hujie   |   We have carefully selected several similar problems for you:  5395 

pid=5394" target="_blank">5394 5393 

pid=5390" target="_blank">5390 5389 

给出一个序列,求变换几次能够回到原来的位置。比方 1 3 2 ,3 不在原来的位置,变到3位置。次数加1,2变到2,次数+1.得到2.。

做法就是分解循环长度。然后求下最小公倍数。

可是不能直接用lcm求最小公倍数。

。我们能够考虑用质数分解来求,即公共的质因子乘每一个数本身的质因子。

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm> using namespace std; typedef long long ll;
typedef unsigned long long ull;
int a[3000010];
int vis[3000010];
int b[3000010];
const ll mod=3221225473;
inline int read()
{
char ch;
for (ch=getchar(); ch<48||ch>57;) ch=getchar();
int d=0;
for (; ch>47&&ch<58; ch=getchar()) d=d*10+ch-48;
return d;
}
ll gcd(ll a,ll b)
{
if(b==0)
return a;
else
return gcd(b,a%b);
}
ll lcm(ll a,ll b)
{
return a/gcd(a,b)*b;
}
int main()
{
int t,n,i,j;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(i=1; i<=n; i++)
a[i]=read();
memset(vis,0,sizeof(vis));
memset(b,0,sizeof(b));
for(i=1; i<=n; i++)
{
if(!vis[i])
{ int t=i;
int s=0;
while(!vis[t])
{
s++;
vis[t]=1;
t=a[t];
}
for(j=2; j*j<=s; j++)
{
int cnt=0;
while(s%j==0)
{
cnt++;
s/=j;
}
b[j]=max(b[j],cnt); //统计公共的质因子。 }
if(s>1)
b[s]=max(b[s],1);
}
}
// cout<<lcm(121,11)<<endl;
ull ans=1;
for(i=2; i<=n; i++)
for(j=1; j<=b[i]; j++)
ans=ull(ans)*i%mod;
cout<<ans<<endl;
}
}

HDU 5392 Infoplane in Tina Town的更多相关文章

  1. hdu 5392 Infoplane in Tina Town(数学)

    Problem Description There is a big stone with smooth surface in Tina Town. When people go towards it ...

  2. hdoj 5392 Infoplane in Tina Town

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5392 #include<stdio.h> #include<cstring> ...

  3. hdu5392 Infoplane in Tina Town(LCM)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Infoplane in Tina Town Time Limit: 14000/ ...

  4. HDU 5391Z ball in Tina Town 数论

    题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5391 bc:  http://bestcoder.hdu.edu.cn/contests/c ...

  5. hdu 5391 Zball in Tina Town(打表找规律)

    问题描述 Tina Town 是一个善良友好的地方,这里的每一个人都互相关心. Tina有一个球,它的名字叫zball.zball很神奇,它会每天变大.在第一天的时候,它会变大11倍.在第二天的时候, ...

  6. HDU 5391 Zball in Tina Town【威尔逊定理】

    <题目链接> Zball in Tina Town Problem Description Tina Town is a friendly place. People there care ...

  7. hdu 5391 Zball in Tina Town 威尔逊定理 数学

    Zball in Tina Town Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Oth ...

  8. HDU.5394.Trie in Tina Town(回文树)

    题目链接 \(Description\) 给定一棵\(Trie\).求\(Trie\)上所有回文串 长度乘以出现次数 的和.这里的回文串只能是从上到下的一条链. 节点数\(n\leq 2\times ...

  9. HDU 5391 Zball in Tina Town (打表,水)

    题意: Tina有一个球,它的名字叫zball.zball很神奇,它会每天变大.在第一天的时候,它会变大1倍.在第二天的时候,它会变大2倍.在第n天的时候,它会变大n倍.zball原来的体积是1.Ti ...

随机推荐

  1. java.net.URISyntaxException: Illegal character in query

    java使用httpclient爬取一个网站的时候,请求:String url3="http://sh.58.com/ershoufang/33562546149042x.shtml?amp ...

  2. Swift自适应布局(Adaptive Layout)教程

    通用的Storyboard 通用的stroyboard文件是通向自适应布局光明大道的第一步.在一个storyboard文件中适配iPad和iPhone的布局在iOS8中已不再是梦想.我们不必再为不同尺 ...

  3. jenkinsfile or pipline 实现微服务自动发布回滚流程

    1 #!/usr/bin/env groovy Jenkinsfile node { //服务名称 def service_name = "**" //包名 def service ...

  4. 警告视图及操作表单在xcode7.0中的使用

    警告视图(alert)及操作表单(action sheet)都用于向用户提供反馈.(模态视图) 操作表单:要求用户在两个以上选项之间做出选择.操作表单从屏幕底部出现,显示一系列按钮供用户选择.用户必须 ...

  5. 关于Adaper的相关用法

    使用BaseAdapter的话需要重载四个方法: getCount getItem getItemId getView getView是用来刷新它所在的ListView的.在每一次item从屏幕外滑进 ...

  6. JS高级——浏览器的线程

    基本概念 1.js的执行过程是单线程的模式,也就是同步进行,只有前面的代码执行完了才会往下面执行 2.但是执行js代码也只是浏览器的线程之一所负责的事情,这个线程被称为js引擎,浏览器还具有其他线程: ...

  7. lnmp环境搭建后续-php安装

    安装PHP7: 下载# wget http://PHP.net/get/php-7.0.2.tar.gz/from/a/mirror 建议安装之前先看看安装帮助文件INSTALL 解压安装 # tar ...

  8. Python操作数据库及hashlib模块

    一.hashlib模块 hashlib模块,主要用于加密相关的操作,在python3的版本里,代替了md5和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA51 ...

  9. Java并发——阿里架构师是如何巧用线程池的!

    一.创建线程 1.创建普通对象,只是在JVM的堆里分配一块内存而已 2.创建线程,需要调用操作系统内核的API,然后操作系统需要为线程分配一系列资源,成本很高 线程是一个重量级对象,应该避免频繁创建和 ...

  10. 多目标跟踪笔记一:Finding the Best Set of K Paths Through a Trellis With Application to Multitarget Tracking

    Abstract 本文提出一种寻找K最优路径的方法. k最优路径的定义:1.the sum of the metrics of all k paths in the set is minimized. ...