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< ...
随机推荐
- oracle中操作数据
使用特定格式插入日期值 insert into emp values (,', to_date('1988-11-11','yyyy-mm-dd'), ); ,); 使用子查询插入数据 create ...
- STM32的SPI问题。
问题描述: 之前一直使用的单片机是LPC2109,对其SPI很熟悉.基本就是原本拿来稍作修改就用.由于某种原因需要使用STM32,然后设备的驱动是之前写好的,只修改了一些硬件控制端口,由于硬件驱动使用 ...
- 生成最小树prim算法
最小生成树prim算法实现 ‘ ’最小生成树,就是权值(两点间直线的值)之和的最小值. 首先,要用二维数组记录点和权值.如上图所示无向图: int G[6][6]; G[1] ...
- WinForm中Component Class、User Control及Custom Control的区别和使用建议
reference: http://blog.csdn.net/redstonehe/article/details/1536549 .NET Framework 为您提供了开发和实现新控件的能力.除 ...
- 3573: [Hnoi2014]米特运输 - BZOJ
Description米特是D星球上一种非常神秘的物质,蕴含着巨大的能量.在以米特为主要能源的D星上,这种米特能源的运输和储存一直是一个大问题. D星上有N个城市,我们将其顺序编号为1到N,1号 ...
- C++代码反汇编后的堆栈寄存器EBP和ESP
最近在分析一个进程崩溃的严重问题,其中有些过程分析需要对ebp, esp 有清晰的理解,对于ebp 和esp 相信大家都很熟悉了,但是为了使本文自成体系,我还是解释一下. ebp--栈底指针 esp- ...
- UVALive 3977
直接搜索,简单题: #include<cstdio> #include<cstring> #include<cmath> #include<algorithm ...
- java 中 String 类的几个问题
首先,我们要搞清楚,在java中,引用和基本数据类型是存储在栈中的.而对象是存储在堆中的. 只有一个例外,就是String对象. 例如: String str1="test"; S ...
- 一个很吊的swing循环生成窗口。
import javax.swing.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; publi ...
- 如何用 OneAPM 优化你的 Node.js 应用?
本文主要讲解如何使用 OneAPM 提供的信息从内存.CPU 使用.响应速度等方面优化 Node.js 应用.适用于定位于刚刚使用 Node.js 开发后台的读者.本文系 OneAPM 用户投稿,本网 ...