首页 > 其他分享 >LCM from 1 to n

LCM from 1 to n

时间:2023-05-31 16:36:05浏览次数:39  
标签:LCM const int SHIFT 素数 uint include


题目:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=26999


题意:给定一个正整数n,求

LCM from 1 to n_i++

的值,输入数据有10000组,每组一个数n,1<=n<=10^8。


分析:定义

LCM from 1 to n_i++_02

为1,2,3,...,n的最小公倍数。则可以发现有如下结论:


LCM from 1 to n_#include_03


所以有:


LCM from 1 to n_#include_04


那么,我们先把所有素数的连乘预处理出来,然后再对每一个素数的整数次幂根据n的不同进行操作。在素数筛选中,我们利用位图来节省内存空间。



#include <iostream>
#include <string.h>
#include <algorithm>
#include <stdio.h>
#include <math.h>

using namespace std;
typedef unsigned int uint;
const int N = 100000005;
const int M = 6000005;
const int SHIFT = 5;
const int RADIX = (1 << SHIFT) - 1;

int flag[(N>>SHIFT)+1];
uint sum[M];
int p[M];
int k;

inline void SetBit(int x)
{
    flag[x>>SHIFT] |= (1<<(x&RADIX));
}

inline bool GetBit(int x)
{
    return flag[x>>SHIFT] & (1<<(x&RADIX));
}

void isprime()
{
    k = 0;
    for(int i=2; i<N; i++)
    {
        if(!GetBit(i))
        {
            p[k++] = i;
            for(int j=i+i; j<N; j+=i)
                SetBit(j);
        }
    }
}

void Init()
{
    sum[0] = p[0];
    for(int i=1; i<k; i++)
        sum[i] = sum[i-1] * p[i];
}

int main()
{
    isprime();
    Init();
    int T,n,tt = 1;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        printf("Case %d: ",tt++);
        uint ans = 1;
        int cnt = 1;
        while(1)
        {
            int m = (int)pow(n+0.9,1.0/cnt);
            if(m < 2) break;
            int i = lower_bound(p,p+k,m) - p;
            if(p[i] != m) i--;
            ans *= sum[i];
            cnt++;
        }
        printf("%u\n",ans);
    }
    return 0;
}





标签:LCM,const,int,SHIFT,素数,uint,include
From: https://blog.51cto.com/u_16146153/6388081

相关文章

  • ABC020D LCM Rush
    题意:给定\(n,k\le10^9\),求\(\sum\limits_{i=1}^n\operatorname{lcm}(i,k)\bmod(10^9+7)\)的值。定义\(f(x,y)=\sum\limits_{i=1}^x[\gcd(i,y)=1]i\)。容易知道答案\(res=k\sum\limits_{d|k}f(\lfloor\frac{n}{d}\rfloor,\frac{k}{d})\)。转化为求\(f(x,y)......
  • 微服务开发LCM(Life Cycle Model)
    02_ProjectExecution_项目执行1_OrderClarification_订单澄清099-Projectapproval--099项目批准110-Contextdiagram--110上下文图121-Processmodel--121过程模型130-Applicationdescription--130应用程序说明131-Architecturediagram--131架构图137-Technicalinterfacede......
  • LCM Cardinality UVA - 10892
    给出n,求有多少对(a,b)(a<b),满足LCM(a,b)=n 暴力求所有因数#include<iostream>#include<algorithm>#include<vector>usingnamespacestd;constintN=1e4+20;#defineintlonglongconstintinf=1e9;voidsov(intn){ vector<int>v;......
  • 2009年NOIP提高组真题-HanKson的趣味题(GCD&LCM优化)
    2009年NOIP提高组真题-HanKson的趣味题(GCD&LCM优化)本题的编码是用Python实现的,C++的思路也是相同的。希望本文能够帮助到你!题目:暴力法:直接根据题目的要求写:frommathimportgcddeflcm(a,b):returna*b//gcd(a,b)n=int(input())for_inrange(n):cnt=......
  • Landscape UI on Portait LCM (竖屏横用/直屏横用)使用
    1.直屏比橫屏便宜許多 2.Qwertykeypadphone(全键盘手机),客戶普遍用”直屏橫放“的方式來实现,但得自己承受performance和tearing(斜切屏)問題.因为使用LCM做90度Rotate,则必然出现斜切屏。3.MTK提供tearing-free(斜切屏解决方法)以及goodperformance。无需LCM......
  • 「解题报告」ARC122E Increasing LCMs
    紫题不会了,感觉要退役了前缀\(\mathrm{lcm}\)的限制很强,考虑每次消去一个数。发现最后一个数没有依赖,考虑最后一个数的条件,其实就是最后一个数不是前\(n-1\)个数的\(\mathrm{lcm}\)的倍数,即\(\displaystyle\gcd(\mathop{\mathrm{lcm}}_{i\nej}(a_j),a_i)<a_i\)。这......
  • 通过 sqlcmd 命令 + Windows 定时任务实现数据库的定时备份
    SQLServer2022Developer是一个全功能免费版本,许可在非生产环境下用作开发和测试数据库。公司用的SQLServer2022Express是SQLServer的一个免费版本,只有基础的......
  • LCM Walk HDU - 5584
    https://vjudge.net/problem/HDU-5584题意:(x,y)可以走到(x+lcm(x,y),y),或(x,y+lcm(x,y))给定终点(ex,ey),问从起点到终点走了多少步?解:先按照题意模拟:设d=gcd(x,y),则再设......
  • SPOJ LCMSUM 题解
    LCMSUM题意:求:\(\sum\limits_{i=1}^n\lim(i,n)\)数据范围:\(1\leqT\leq3\times10^5\),\(1\leqn\leq10^6\)。原式\(=\sum\limits_{i=1}^n\frac{i\timesn}{\gc......
  • 如何用潜类别混合效应模型(Latent Class Mixed Model ,LCMM)分析老年痴呆年龄数据|附
    全文下载链接:http://tecdat.cn/?p=24647最近我们被客户要求撰写关于LCMM的研究报告,包括一些图形和统计输出。线性混合模型假设N个受试者的群体是同质的,并且在群体水平......