POJ 1619 EKG Sequence(EKG数列 ,数据处理技巧)
来源:互联网 发布:java web 案例 编辑:程序博客网 时间:2024/06/03 10:06
分析:此题的结构是按从前往后用位置挑选合适的数字。每一次,枚举前一位置数字素因子,用素因子寻找用同样拥有该素因子且未进队的最小整数(公因子可以分解成素因子),伪代码: ans=INF;
枚举前一位置素因子
{
寻找用同样拥有该素因子且未进队的最小整数;
更新ans=min(最小整数,ans)
}
现在位置=ans;代码:
部分参考于:POJ 1619 EKG Sequence
枚举前一位置素因子
{
寻找用同样拥有该素因子且未进队的最小整数;
更新ans=min(最小整数,ans)
}
现在位置=ans;代码:
<span style="font-family:SimSun;font-style: normal;">#include<iostream>#include<cstdio>#include<cstring>#include<queue>#include<cmath>#include<algorithm>#define INF 0x3f3f3f3fusing namespace std;const int MAXN=1000005;int rec[MAXN],nex[MAXN],b[MAXN];void make_table(){ int i,j; rec[1]=1; rec[2]=2; for(i=1;i<MAXN;i++)//拥有因子为i且未进队的最小整数(实际上后面代码只用了其中下标为素因子的部分) nex[i]=i; nex[2]=4; for(i=2;i<MAXN;i++)//b[]存储每个数字的最小素因子, if(b[i]==0) { for(j=1;i*j<MAXN;j++) if(b[i*j]==0)b[i*j]=i; } int cur=2; for(i=2;i<MAXN;i++) { int k=cur; cur=MAXN; for(int p=b[k];p!=1;) { while(rec[nex[p]]&&nex[p]+p<MAXN)//更新 nex[p]+=p; cur=min(cur,nex[p]); while(k%p==0)k=k/p;//查找下一个素因子 } rec[cur]=i+1;//找到该位置的数字,并在以数字为索引的数组里存进位置标号 }}int main(){ int n; make_table(); while(~scanf("%d",&n)&n) { printf("The number %d appears in location %d.\n",n,rec[n]); } return 0;}</span>
部分参考于:POJ 1619 EKG Sequence
0 0
- POJ 1619 EKG Sequence(EKG数列 ,数据处理技巧)
- POJ 1619 EKG Sequence
- POJ 1619 EKG Sequence 笔记
- Sicily 1038. EKG Sequence
- Codeforces 316B2 EKG
- 灵玖EKG内网文档搜索引擎
- 数列(sequence) 题解
- 斐波纳契数列(Fibonacci Sequence)
- Lucas Sequence(卢卡斯数列)
- POJ 题目2442 Sequence(技巧,优先队列)
- POJ 2478 Farey Sequence(n级法雷数列的元素个数)
- 数列(sequence)
- 数列(sequence)
- POJ 2478 Farey Sequence(Farey数列&欧拉函数求和)
- (poj)Sequence Median
- 外观数列(Look-and-say sequence)
- 递归数列(recursive sequence)
- NOIP2006数列(sequence)
- android aspack 下载地址
- QString与string的相互转换
- SpringMVC学习笔记(7) 返回Json格式数据
- Android获取wifi的名字(SSID)
- OGRE sdk1.9 配置 vs2012 win7旗舰版64位 初级入门实例
- POJ 1619 EKG Sequence(EKG数列 ,数据处理技巧)
- 利用jQuery 解决URL请求参数有中文时出现乱码的问题
- 再按一次退出程序 工具类
- 树状数组详细介绍
- yii 伪静态处理
- 黑马程序员——高新技术之反射
- Vision引擎 地形编辑器 - 主工具栏
- 日本日历的表示
- MySQL增加新用户账户