博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
URAL 1024 Permutations
阅读量:4496 次
发布时间:2019-06-08

本文共 855 字,大约阅读时间需要 2 分钟。

URAL_1024

    实际上就是去求若干循环节的最小公倍数,题目中说明了数据会保证最后结果不大于10^9,不过超int的情况还是很好构造出来的,让循环节长度分别等于一连串的素数即可。

#include
#include
#define MAXD 1010int N, P[MAXD], vis[MAXD];int gcd(int x, int y){ return y == 0 ? x : gcd(y, x % y);}void solve(){ int i, j, k, cnt, ans = 1; for(i = 1; i <= N; i ++) scanf("%d", &P[i]); memset(vis, 0, sizeof(vis)); for(i = 1; i <= N; i ++) if(!vis[i]) { vis[i] = 1; j = i; cnt = 1; while(!vis[P[j]]) { j = P[j]; vis[j] = 1; ++ cnt; } ans = ans / gcd(ans, cnt) * cnt; } printf("%d\n", ans);}int main(){ while(scanf("%d", &N) == 1) { solve(); } return 0;}

 

 

转载于:https://www.cnblogs.com/staginner/archive/2012/05/02/2479334.html

你可能感兴趣的文章
vi 常用技巧
查看>>
Android基于TrafficStats实现流量实时监测
查看>>
《微店大数据开发平台架构演进》阅读有感
查看>>
Gym - 101670G Ice cream samples(CTU Open Contest 2017 尺取法)
查看>>
Log4cpp配置文件格式说明
查看>>
CommonClassLoader或SharedClassLoader加载的Spring如何访问并不在其加载范围内的用户程序呢...
查看>>
倍道而行 :堆(heap)
查看>>
Configure Theano in Windows 8.1 x64
查看>>
win7下安装配置nodejs、使用npm安装express
查看>>
DB2某建表语句
查看>>
Redis 性能测试
查看>>
jQuery基础
查看>>
hive 的mysql配置
查看>>
Vue - 指令
查看>>
Vue 实现todolist的添加删除功能
查看>>
3dMax,Maya与FBX
查看>>
设计模式解密(10)- 迭代器模式
查看>>
CURL 支持 GET、PUT、POST、DELETE请求
查看>>
条件检索
查看>>
linux执行命令缺少共享库解决方法和ldd命令说明
查看>>