poj3307
可以证明,每个符合的数都由2,3,5,7相乘得到。
依据猜想:下一个出现的数是由前面某个数乘上这几个数之一得到的新的数。
假设之前的数均满足序列,则因为下一个数必有2,3,5,7相乘得到,而这个数之前的数已经是2,3,5,7组成的最小数,则该数必为之前的数再乘上2,3,5,7得到。
可由最小堆实现。
后发现将其分为由之前的数分别乘上这四个数得到4个序列,可以证明序列递增,故只需记录其中每个序列位置即可。
因此得到算法。
#include<cstdio>
#define MAXN (1e18)
#define Maxn 80000 //个数比想象中少很多
long long n,ans[Maxn+],p2,p3,p5,p7,f2[Maxn],f3[Maxn],f5[Maxn],f7[Maxn],all,a,b;
int main()
{
all=;
ans[]=;
p2=p3=p5=p7=;
for(int i=;i<Maxn;i++){
f2[i]=ans[i]*;
f3[i]=ans[i]*;
f5[i]=ans[i]*;
f7[i]=ans[i]*;
a=(f2[p2]>f3[p3]?f3[p3]:f2[p2]);
b=(f5[p5]>f7[p7]?f7[p7]:f5[p5]);
ans[i+]=a>b?b:a;
if(ans[i+]==f2[p2]) ++p2;
if(ans[i+]==f3[p3]) ++p3;
if(ans[i+]==f5[p5]) ++p5;
if(ans[i+]==f7[p7]) ++p7;
}
int t;
scanf("%d",&t);
while(t--){
scanf("%lld",&n);
printf("%lld\n",ans[n]);
}
return ;
}
poj3307的更多相关文章
- POJ3307+找规律
/* 题意:求第N个productivity property数是谁. (productivity property数:就是这个数可以由另外的数的各个位上的乘积得到.) */ #include< ...
随机推荐
- VS查看工程项目代码行数
ctrl+shift+F 查找选项选正则表达式 正则表达式 b*[^:b#/]+.*$或 ^b*[^:b#/]+.*$
- LoadRunner 学习笔记(3)基础
LoadRunner包含的组件: Virtual User Generator 录制最终用户业务流程并创建自动化性能测试脚本,即 Vuser 脚本 Controller 组织.驱动.管理并监控负载测试 ...
- Notes of the scrum meeting(10/28)
meeting time:4:00~6:00p.m.,October 28th,2013 meeting place:雕刻时光 attendees: 顾育豪 ...
- android开发 PopupWindow 设置充满屏幕
View qrcode_view = this.getLayoutInflater().inflate(R.layout.taskdetail_qrcode,null); final PopupWin ...
- NOI2014 全国互测Round2
数据包:http://pan.baidu.com/s/1pJNSkL9 T1: 我们先直接用矩阵快速幂暴力 首先是0维,f1=1,f2=1 然后推出下一维的f1'和f2' 下一维的f1'和f2'其实就 ...
- 【DP】BZOJ 1260: [CQOI2007]涂色paint
1260: [CQOI2007]涂色paint Time Limit: 30 Sec Memory Limit: 64 MBSubmit: 893 Solved: 540[Submit][Stat ...
- 【BZOJ】【3052】【WC2013】糖果公园
树分块 老早(大约一个月以前?)就听说这道神题了……orz rausen 一直拖到现在才做……发现还是不会呢= = 只好也去Orz了Hzwer和zky http://hzwer.com/5250.ht ...
- uva 757
贪心 优先队列 #include <cstdio> #include <cstdlib> #include <cmath> #include <map> ...
- SQLite 学习流水账笔记
1.SQLite随机取n行数据,可加自己的条件 SELECT * FROM TableName WHERE key ? ORDER BY RANDOM() LIMIT ,Num; 2.sql语句中查询 ...
- POJ1144 Network 无向图的割顶
现在打算重新学习图论的一些基础算法,包括像桥,割顶,双连通分量,强连通分量这些基础算法我都打算重敲一次,因为这些量都是可以用tarjan的算法求得的,这次的割顶算是对tarjan的那一类算法的理解的再 ...