1434 区间LCM

基准时间限制:1 秒 空间限制:131072 KB
一个整数序列S的LCM(最小公倍数)是指最小的正整数X使得它是序列S中所有元素的倍数,那么LCM(S)=X。

例如,LCM(2)=2,LCM(4,6)=12,LCM(1,2,3,4,5)=60。
现 在给定一个整数N(1<=N<=1000000),需要找到一个整数M,满足M>N,同时LCM(1,2,3,4,...,N- 1,N) 整除 LCM(N+1,N+2,....,M-1,M),即LCM(N+1,N+2,....,M-1,M)是LCM(1,2,3,4,...,N-1,N) 的倍数.求最小的M值。
Input
多组测试数据,第一行一个整数T,表示测试数据数量,1<=T<=5
每组测试数据有相同的结构构成:
每组数据一行一个整数N,1<=N<=1000000。
Output
每组数据一行输出,即M的最小值。
Input示例
3
1
2
3
Output示例
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的更多相关文章

  1. 51nod 1434 理解lcm

    1434 区间LCM 题目来源: TopCoder 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 一个整数序列S的LCM(最小公倍数)是指最小的正 ...

  2. 51nod1434 区间LCM

    将n!标准分解.m!/n!必定需要包含n!的分解式.对于每个质数枚举最小的答案,然后总的取最大. #include<cstdio> #include<cstring> #inc ...

  3. NOIP2018提高组金牌训练营——数论专题

    地址 https://www.51nod.com/live/liveDescription.html#!liveId=23 1187 寻找分数 给出 a,b,c,d, 找一个分数p/q,使得a/b & ...

  4. 【倍增】LCM QUERY

    给一个序列,每次给一个长度l,问长度为l的区间中lcm最小的. 题解:因为ai<60,所以以某个点为左端点的区间的lcm只有最多60种的情况,而且相同的lcm区间的连续的. 所以就想到一个n*6 ...

  5. HDU3579:Hello Kiki(解一元线性同余方程组)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=3579 题目解析:求一元线性同余方程组的最小解X,需要注意的是如果X等于0,需要加上方程组通解的整数区间lc ...

  6. 51nod部分容斥题解

    51nod1434 区间LCM 跟容斥没有关系.首先可以确定的一个结论是:对于任意正整数,有1*2*...*n | (k+1)*(k+2)*...*(k+n).因为这就是$C_{n+k}^{k}$. ...

  7. 【题解】51nod 1203JZPLCM问题

    这题好强强啊,貌似是集训队原题?集训队原题当中值域是1e9的范围,这样各种乱搞是妥妥的不能过了,只能写正解的离线+树状数组维护前缀积. 最开始我写了几种乱搞做法,包括莫队和线段树做法.其中表现比较优秀 ...

  8. 【JZOJ4860】【NOIP2016提高A组集训第7场11.4】分解数

    题目描述 Dpstr学习了动态规划的技巧以后,对数的分解问题十分感兴趣. Dpstr用此过程将一个正整数x分解成若干个数的乘积:一开始令集合A中只有一个元素x,每次分解时从A中取一个元素a并找出两个大 ...

  9. 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 ...

随机推荐

  1. STM32 BootLoader升级固件

    一.知识点 1.BootLoader就是单片机启动时候运行的一段小程序,这段程序负责单片机固件的更新,也就是单片机选择性的自己给自己下程序.可以更新,也可以不更新,更新的话,BootLoader更新完 ...

  2. 14 - springboot的@Configuration、@Bean、@Import()、@ImportResource()、@Conditional说明

    1.@Configuration.@Bean.@Import().@ImportResource().@Conditional 分析源码的时候总会见到标题中的这几个注解,因此:弄一篇博客来说明一下吧, ...

  3. java Random()用法

    1.random.nextInt() random.nextIn()的作用是随机生成一个int类型,因为int 的取值范围是 -2147483648--2147483647 ,所以生成的数也是处于这个 ...

  4. python写的多项式符号乘法

    D:\>poly.py(x - 1) * (x^2 + x + 1) = x^3 - 1 1 import ply.lex as lex # pip install ply 2 import p ...

  5. aboard, abolish

    aboard board做动词有上车/船/飞机的意思,boarding就是正在上.board做名词有板的意思,车厢地板的板. a是个词根,有三种意思:1. 以某种状态或方式,如: ablaze, af ...

  6. IDEA中对代码进行测试

    一. 建立对应得目录 二.导入junit依赖 <dependency> <groupId>junit</groupId> <artifactId>jun ...

  7. 【JAVA】【Basic】MacOS上搭建JAVA开发环境

    1. JRE 1.1. 下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html 1.1.1. dmg格式安装: ...

  8. vue页面常用方法

    输入框事件监听(三):blur与change的差异 iview 验证 trigger: 'blur,change', 同时加两个,省的每次还想input 还是 select 4.加载:Loading ...

  9. 实现nfs持久挂载+autofs自动挂载

    实验环境: 两台主机 node4:192.168.37.44 NFS服务器 node2:192.168.37.22 客户端 在nfs服务器,先安装nfs和rpcbind [root@node4 fen ...

  10. solr8.2

    https://www.cnblogs.com/carlosouyang/p/11352779.html