1434 区间LCM
多组测试数据,第一行一个整数T,表示测试数据数量,1<=T<=5
每组测试数据有相同的结构构成:
每组数据一行一个整数N,1<=N<=1000000。
每组数据一行输出,即M的最小值。
3
1
2
3
2
4
6
保证[1,N]区间每个质数的指数最大值在[N+1,M]间至少出现一次。
1 #include<iostream>
2 #include<algorithm>
3 #include<queue>
4 #include<set>
5 #include<math.h>
6 #include<stdlib.h>
7 #include<stdio.h>
8 #include<string.h>
9 using namespace std;
10 bool prime[1000005];
11 int ans[100000];
12 int ak[1000005];
13 typedef long long LL;
14 int main(void)
15 {
16 memset(prime,0,sizeof(prime));
17 for(int i = 2; i <= 1000; i++)
18 {
19 if(!prime[i])
20 {
21 for(int j = i; (i*j) <= 1000000 ; j++)
22 {
23 prime[i*j] = true;
24 }
25 }
26 }
27 int cn = 0;
28 for(int i = 2; i < 1000000; i++)
29 {
30 if(!prime[i])
31 ans[cn++] = i;
32 }
33 int T;
34 scanf("%d",&T);
35 while(T--)
36 {
37 int n;
38 scanf("%d",&n);
39 if(n == 1)printf("2\n");
40 else if(n==2)printf("4\n");
41 else if(n==3)printf("6\n");
42 else
43 {
44 fill(ak,ak+1000000,1);
45 int maxx = 0;
46 for(int i = 0; i < cn ; i++)
47 {
48 if(ans[i] > n)
49 {
50 maxx = i-1;
51 break;
52 }
53 int k = 1;
54 int t = 0;
55 while(k<=n)
56 {
57 ak[ans[i]] = max(ak[ans[i]],k) ;
58 k*=ans[i];
59 }
60 }if(maxx == 0) maxx = cn;
61 maxx = min(maxx,cn);
62 LL x = n;
63 LL akk = x;
64 for(int i = 0; i <= maxx; i++)
65 {
66 if(ak[ans[i]]>1)
67 {
68 LL xx= (x)/ak[ans[i]];
69 if(xx*ak[ans[i]] <= x)
70 {
71 xx++;
72 }
73 akk = max(akk,xx*ak[ans[i]]);
74 }
75 }
76 printf("%lld\n",akk);
77 }
78 }
79 return 0;
80 }
1434 区间LCM的更多相关文章
- 51nod 1434 理解lcm
1434 区间LCM 题目来源: TopCoder 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 一个整数序列S的LCM(最小公倍数)是指最小的正 ...
- 51nod1434 区间LCM
将n!标准分解.m!/n!必定需要包含n!的分解式.对于每个质数枚举最小的答案,然后总的取最大. #include<cstdio> #include<cstring> #inc ...
- NOIP2018提高组金牌训练营——数论专题
地址 https://www.51nod.com/live/liveDescription.html#!liveId=23 1187 寻找分数 给出 a,b,c,d, 找一个分数p/q,使得a/b & ...
- 【倍增】LCM QUERY
给一个序列,每次给一个长度l,问长度为l的区间中lcm最小的. 题解:因为ai<60,所以以某个点为左端点的区间的lcm只有最多60种的情况,而且相同的lcm区间的连续的. 所以就想到一个n*6 ...
- HDU3579:Hello Kiki(解一元线性同余方程组)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3579 题目解析:求一元线性同余方程组的最小解X,需要注意的是如果X等于0,需要加上方程组通解的整数区间lc ...
- 51nod部分容斥题解
51nod1434 区间LCM 跟容斥没有关系.首先可以确定的一个结论是:对于任意正整数,有1*2*...*n | (k+1)*(k+2)*...*(k+n).因为这就是$C_{n+k}^{k}$. ...
- 【题解】51nod 1203JZPLCM问题
这题好强强啊,貌似是集训队原题?集训队原题当中值域是1e9的范围,这样各种乱搞是妥妥的不能过了,只能写正解的离线+树状数组维护前缀积. 最开始我写了几种乱搞做法,包括莫队和线段树做法.其中表现比较优秀 ...
- 【JZOJ4860】【NOIP2016提高A组集训第7场11.4】分解数
题目描述 Dpstr学习了动态规划的技巧以后,对数的分解问题十分感兴趣. Dpstr用此过程将一个正整数x分解成若干个数的乘积:一开始令集合A中只有一个元素x,每次分解时从A中取一个元素a并找出两个大 ...
- SPOJ LGLOVE 7488 LCM GCD Love (区间更新,预处理出LCM(1,2,...,n))
题目连接:http://www.spoj.com/problems/LGLOVE/ 题意:给出n个初始序列a[1],a[2],...,a[n],b[i]表示LCM(1,2,3,...,a[i]),即1 ...
随机推荐
- mongodb-to-mongodb
python3用于mongodb数据库之间倒数据,特别是分片和非分片之间. 本项目是一个集合一个集合的倒. 参考了logstash,对于只增不减而且不修改的数据的可以一直同步,阻塞同步,断点同步.改进 ...
- [源码解析] PyTorch分布式优化器(2)----数据并行优化器
[源码解析] PyTorch分布式优化器(2)----数据并行优化器 目录 [源码解析] PyTorch分布式优化器(2)----数据并行优化器 0x00 摘要 0x01 前文回顾 0x02 DP 之 ...
- Scala(六)【模式匹配】
目录 一.基本语法 二.匹配固定值 三.守卫 四.匹配类型 五.匹配集合 1.Array 2.List 3.元祖 4.对象和样例类 六.偏函数 七.赋值匹配 八.for循环匹配 一.基本语法 在匹配某 ...
- 一道题目学ES6 API,合并对象id相同的两个数组对象
var arr2=[{id:1,name:'23'}] var arr1=[{id:1,car:'car2'}] const combined = arr2.reduce((acc, cur) =&g ...
- 转 proguard 混淆工具的用法 (适用于初学者参考)
转自:https://www.cnblogs.com/lmq3321/p/10320671.html 一. ProGuard简介 附:proGuard官网 因为Java代码是非常容易反编码的,况且An ...
- go channel 概述 - 管道
概述 unix/linux OS 的一个进程的输出可以是另一个进程的输入,这些进程使用stdin与stdout设备作为通道,在进程之间传递数据. 同样的,GO中有io.Reader与io.Writer ...
- linux环境centos
qhost:查看集群 投送到集群qsub -l vf=2G,p=1 work.sh -cwd -V all_section_run.sh 杀死任务 qdel id qstat -u \* |less ...
- Linux提取命令grep 有这一篇就够了
grep作为linux中使用频率非常高的一个命令,和cut命令一样都是管道命令中的一员.并且其功能也是对一行数据进行分析,从分析的数据中取出我们想要的数据.也就是相当于一个检索的功能.当然了,grep ...
- Sentry 监控 - 私有 Docker Compose 部署与故障排除详解
内容整理自官方开发文档 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Map ...
- 【划重点】Python matplotlib绘图设置坐标轴的刻度
一.语法简介 plt.xticks(ticks,labels,rotation=30,fontsize=10,color='red',fontweight='bold',backgroundcolor ...