HDU 5392 Infoplane in Tina Town
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
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).
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
).
ans
representing the answer.
2
3
1 3 2
6
2 3 4 5 6 1
2
6
pid=5394" target="_blank">5394
5393pid=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的更多相关文章
- hdu 5392 Infoplane in Tina Town(数学)
Problem Description There is a big stone with smooth surface in Tina Town. When people go towards it ...
- hdoj 5392 Infoplane in Tina Town
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5392 #include<stdio.h> #include<cstring> ...
- hdu5392 Infoplane in Tina Town(LCM)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Infoplane in Tina Town Time Limit: 14000/ ...
- HDU 5391Z ball in Tina Town 数论
题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5391 bc: http://bestcoder.hdu.edu.cn/contests/c ...
- hdu 5391 Zball in Tina Town(打表找规律)
问题描述 Tina Town 是一个善良友好的地方,这里的每一个人都互相关心. Tina有一个球,它的名字叫zball.zball很神奇,它会每天变大.在第一天的时候,它会变大11倍.在第二天的时候, ...
- HDU 5391 Zball in Tina Town【威尔逊定理】
<题目链接> Zball in Tina Town Problem Description Tina Town is a friendly place. People there care ...
- hdu 5391 Zball in Tina Town 威尔逊定理 数学
Zball in Tina Town Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Oth ...
- HDU.5394.Trie in Tina Town(回文树)
题目链接 \(Description\) 给定一棵\(Trie\).求\(Trie\)上所有回文串 长度乘以出现次数 的和.这里的回文串只能是从上到下的一条链. 节点数\(n\leq 2\times ...
- HDU 5391 Zball in Tina Town (打表,水)
题意: Tina有一个球,它的名字叫zball.zball很神奇,它会每天变大.在第一天的时候,它会变大1倍.在第二天的时候,它会变大2倍.在第n天的时候,它会变大n倍.zball原来的体积是1.Ti ...
随机推荐
- Coursera公开课-Machine_learing:编程作业8(2016-10-06 20:49)
Anomaly Detection and Recommender Systems 本周编程作业分为两部分:异常检测和推荐系统. 异常检测:本质就是使用样本的到特种值的gaussian分布,来预估正确 ...
- 【转】linux下vi命令大全
转自:http://www.cnblogs.com/88999660/articles/1581524.html 进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi ...
- ResGen.exe”已退出,代码为2 问题处理
转载自 http://blog.sina.com.cn/s/blog_5f82a1060101d8tm.html 在64位的Windows 7下,用VS2010编译4.0以前的.Net项目会有问题. ...
- JQuery中常用的$.get(),$.post(),$.ajax(),$.getJSON(),load()的详解与区别
背景:因为最近需要获取本地的数据件进行项目测试,需要用到JQuery实现数据文件的读取,但是由于对JQuery内的获取文件方式不太了解,这次趁着机会进行一下总结.因为该总结是本人根据平常的使用及网上的 ...
- Python--10、进程知识补充
守护进程 基于进程启动的子进程,会和主进程一起结束.主进程结束的依据是程序的代码执行完毕. #创建守护进程p=Process(task) p.daemon = True p.start() 子进程需要 ...
- Android sensor 系统框架 (二)
连载上一篇http://www.cnblogs.com/hackfun/p/7327320.html (D) 如何加载访问.so库 在前一篇博客http://www.cnblogs.com/hackf ...
- Ajax——模板引擎
模板介绍 1.必要性:ajax请求从服务器接收到大量数据,此时再用普通的字符串拼接是很耗费时间的,这时候模板就有其必要性 2.便利性:插件套用,现在有很多主流的模板插件:BaiduTemplate(百 ...
- ASP.NET MVC 二维码生成(ThoughtWorks.QRCode)
原文地址http://www.cnblogs.com/jys509/p/4592539.html
- svg文件使用highmap显示
svg文件使用highmap显示 highmap,ammap都是比较好的第三方插件用来显示svg图片: ammap导航可能更美观点(这个highmap后面可能也会赶上), highma ...
- Tcl之looping
1 While loop while test body The while command evaluates test as an expression. If test is true, the ...