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< ...
随机推荐
- TypeError: Object #<IncomingMessage> has no method 'flash'
JavaScript相关代码: router.post('/reg', function(req, res) { //检验用户两次输入的口令是否一致 if (req.body['password-re ...
- 如何编写好的jQuery代码
本文就是自己看,如果您不小心进到了这里,请看源处,是这个作者翻译的:http://blog.sae.sina.com.cn/archives/4157 讨论jQuery和javascript性能的文章 ...
- iOS 10 版本适配问题收集-b
随着iOS10发布的临近,大家的App都需要适配iOS10,下面是我总结的一些关于iOS10适配方面的问题,如果有错误,欢迎指出. 1.系统判断方法失效: 在你的项目中,当需要判断系统版本的话,不要使 ...
- easyui toolbar 可以放在datagrid底下
html: <div class="easyui-tabs" style="height: 250px;" tools="#t_rank&quo ...
- C# book
<编写高质量代码:改善C#程序的157个建议>源码下载 http://www.cnblogs.com/luminji/archive/2011/09/20/2182265.html < ...
- idea从vcs引入maven项目报错
一.问题 用idea从cvs上check out的maven项目,打开后,发现依赖的jar包都有红色下划线.检查本地的maven库中有对应的包,那就是依赖有问题,idea没有在本地找到对应的包. 二. ...
- Gitlab安装和使用相关信息
Gitlab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目.它拥有与Github类似的功能,能够浏览源代码,管理 ...
- Python-aiohttp百万并发
http://www.aikaiyuan.com/10935.html 本文将测试python aiohttp的极限,同时测试其性能表现,以分钟发起请求数作为指标.大家都知道,当应用到网络操作时,异步 ...
- StringTokenizer用法
import java.util.StringTokenizer; public class StringTokenizerTest { public static void main(String[ ...
- UVA 11806 Cheerleaders (组合+容斥原理)
自己写的代码: #include <iostream> #include <stdio.h> #include <string.h> /* 题意:相当于在一个m*n ...